Udostępnij za pośrednictwem


Socket.DuplicateAndClose(Int32) Metoda

Definicja

Duplikuje odwołanie gniazda dla procesu docelowego i zamyka gniazdo dla tego procesu.

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

Parametry

targetProcessId
Int32

Identyfikator procesu docelowego, w którym jest tworzony duplikat odwołania do gniazda.

Zwraca

Odwołanie do gniazda, które ma zostać przekazane do procesu docelowego.

Atrybuty

Wyjątki

Platforma .NET Core w dowolnym systemie operacyjnym i programie .NET 5 lub nowszym tylko w systemie operacyjnym Unix: bieżąca platforma nie jest obsługiwana.

targetProcessID jest nieprawidłowym identyfikatorem procesu.

-lub-

Duplikowanie odwołania do gniazda nie powiodło się.

Uwagi

Proces docelowy powinien używać konstruktora Socket(SocketInformation) do utworzenia zduplikowanego wystąpienia gniazda.

Nie należy wywoływać konstruktora Socket(SocketInformation) wiele razy przy użyciu tej samej tablicy bajtów w argumencie SocketInformation w każdym wywołaniu. Jeśli to zrobisz, będziesz mieć wiele wystąpień zarządzanych Socket z tym samym podstawowym gniazdem, co jest zdecydowanie odradzane.

Na .NET Framework, jeśli proces tworzenia gniazda używa metod asynchronicznych, proces musi najpierw ustawić UseOnlyOverlappedIO właściwość na true. W przeciwnym razie metoda asynchroniczna powiąże gniazdo z portem ukończenia we/ wy procesu tworzenia, co może spowodować ArgumentNullException zgłoszenie w procesie docelowym.

Na platformie .NET Core 1.0-3.1 ta metoda nie jest obsługiwana.

Na platformie .NET 5 lub nowszym DuplicateAndClose(Int32) obsługa systemu Windows jest ograniczona. W przeciwieństwie do .NET FrameworkUseOnlyOverlappedIO, właściwość jest NOP, dlatego proces tworzenia gniazda nigdy nie może wywoływać metod asynchronicznych w gniazdie. Wywołanie operacji asynchronicznej zawsze wiąże je z portem ukończenia we/ wy procesu tworzenia, co może spowodować ArgumentNullException zgłoszenie elementu w procesie docelowym.

Dotyczy