Compartilhar via


Socket.DuplicateAndClose(Int32) Método

Definição

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.

Aplica-se a