次の方法で共有


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) コンストラクターを使用して、重複するソケット インスタンスを作成する必要があります。

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

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

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

適用対象