Socket.DuplicateAndClose(Int32) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Duplica a referência de soquete para o processo de destino e fecha o soquete para esse processo.
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
Parâmetros
- targetProcessId
- Int32
A ID do processo de destino em que uma duplicata da referência de soquete é criada.
Retornos
A referência de soquete a ser passada para o processo de destino.
- Atributos
Exceções
.NET Core em qualquer sistema operacional e .NET 5+ somente no sistema operacional baseado em Unix: não há suporte para a plataforma atual.
targetProcessID
não é uma ID de processo válida.
- ou -
Falha na duplicação de referência do soquete.
Comentários
O processo de destino deve usar o Socket(SocketInformation) construtor para criar a instância de soquete duplicada.
Não chame o Socket(SocketInformation) construtor várias vezes usando a mesma matriz de bytes no SocketInformation argumento em cada chamada. Se você fizer isso, terá várias instâncias gerenciadas Socket com o mesmo soquete subjacente, o que é altamente desencorajado.
Em .NET Framework, se o processo que cria o soquete usar métodos assíncronos, o processo deverá primeiro definir a UseOnlyOverlappedIO propriedade como true
. Caso contrário, o método assíncrono associará o soquete a uma porta de conclusão de E/S do processo de criação, o que pode fazer com que um ArgumentNullException seja lançado no processo de destino.
No .NET Core 1.0-3.1, esse método não tem suporte.
No .NET 5+, DuplicateAndClose(Int32) tem suporte limitado no Windows. Ao contrário de .NET Framework, a UseOnlyOverlappedIO propriedade é um NOP, portanto, o processo de criação do soquete nunca deve chamar métodos assíncronos no soquete. Uma chamada para uma operação assíncrona sempre a associará a uma porta de conclusão de E/S do processo de criação, o que pode fazer com que um ArgumentNullException seja lançado no processo de destino.