次の方法で共有


Socket.DuplicateAndClose(Int32) メソッド

定義

ターゲット プロセスのソケット参照を複製してこのプロセスのソケットを閉じます。

public:
 System::Net::Sockets::SocketInformation DuplicateAndClose(int targetProcessId);
[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public System.Net.Sockets.SocketInformation DuplicateAndClose (int targetProcessId);
public System.Net.Sockets.SocketInformation DuplicateAndClose (int targetProcessId);
[<System.Runtime.Versioning.SupportedOSPlatform("windows")>]
member this.DuplicateAndClose : int -> System.Net.Sockets.SocketInformation
member this.DuplicateAndClose : int -> System.Net.Sockets.SocketInformation
Public Function DuplicateAndClose (targetProcessId As Integer) As SocketInformation

パラメーター

targetProcessId
Int32

ソケット参照の複製が作成されるターゲット プロセスの ID。

戻り値

ターゲット プロセスに渡されるソケット参照。

属性

例外

任意の OS 上の .NET Core と Unix ベースの OS 上の .NET 5 以降のみ: 現在のプラットフォームはサポートされていません。

targetProcessID が有効なプロセス ID ではありません。

- または -

ソケット参照の複製に失敗しました。

注釈

ターゲット プロセスでは、コンストラクターを Socket(SocketInformation) 使用して、重複するソケット インスタンスを作成する必要があります。

各呼び出しの引数で Socket(SocketInformation) 同じバイト配列を使用して、コンストラクターを SocketInformation 複数回呼び出さないでください。 そうする場合は、基になるソケットが同じ複数のマネージド Socket インスタンスが存在します。これは強くお勧めしません。

.NET Framework、ソケットを作成するプロセスが非同期メソッドを使用する場合、プロセスは最初に プロパティを UseOnlyOverlappedIO に設定するtrue必要があります。 それ以外の場合、非同期メソッドはソケットを作成プロセスの I/O 完了ポート にバインドします。これにより、ターゲット プロセスで がスローされる可能性 ArgumentNullException があります。

.NET Core 1.0-3.1 では、このメソッドはサポートされていません。

.NET 5 以降では、 DuplicateAndClose(Int32) Windows でのサポートは制限されています。 .NET Frameworkとは異なり、 UseOnlyOverlappedIO プロパティは NOP であるため、ソケットを作成するプロセスでは、ソケットで非同期メソッドを呼び出す必要はありません。 非同期操作を呼び出すと、常に作成プロセスの I/O 完了ポート にバインドされます。これにより、ターゲット プロセスで がスローされる可能性があります ArgumentNullException

適用対象