Socket.DuplicateAndClose(Int32) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
複製目標處理序的通訊端參考,並關閉這個處理序的通訊端。
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。
傳回
要傳遞至目標處理序的通訊端參考。
- 屬性
例外狀況
僅限 Unix 型 OS 上的任何 OS 和 .NET 5+ 上的 .NET Core:不支援目前的平臺。
備註
目標進程應該使用 建 Socket(SocketInformation) 構函式來建立重複的套接字實例。
請勿在每個呼叫中使用自變數中的SocketInformation相同位元組陣列多次呼叫Socket(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 在目標進程中擲回 。