PFN_WSK_GET_REMOTE_ADDRESS função de retorno de chamada (wsk.h)

A função WskGetRemoteAddress recupera o endereço de transporte remoto de um soquete de fluxo ou orientado para conexão.

Sintaxe

PFN_WSK_GET_REMOTE_ADDRESS PfnWskGetRemoteAddress;

NTSTATUS PfnWskGetRemoteAddress(
  [in]      PWSK_SOCKET Socket,
  [out]     PSOCKADDR RemoteAddress,
  [in, out] PIRP Irp
)
{...}

Parâmetros

[in] Socket

Um ponteiro para uma estrutura WSK_SOCKET que especifica o objeto de soquete para o soquete que está sendo consultado.

[out] RemoteAddress

Um ponteiro para um buffer alocado pelo chamador que recebe o endereço de transporte remoto do soquete. O buffer deve estar localizado na memória não paginada. O buffer também deve ser grande o suficiente para conter o tipo de estrutura SOCKADDR específico que corresponde à família de endereços especificada pelo aplicativo WSK ao criar o soquete.

Para um soquete orientado à conexão que o aplicativo WSK aceitou em um soquete de escuta, a família de endereços é igual à família de endereços especificada pelo aplicativo WSK ao criar o soquete de escuta.

[in, out] Irp

Um ponteiro para um IRP alocado pelo chamador que o subsistema WSK usa para concluir a operação de recuperação de forma assíncrona. Para obter mais informações sobre como usar IRPs com funções WSK, consulte Usando IRPs com funções de kernel Winsock.

Retornar valor

WskGetRemoteAddress retorna um dos seguintes códigos NTSTATUS:

Código de retorno Descrição
STATUS_SUCCESS
O endereço de transporte remoto do soquete foi recuperado com êxito. O IRP será concluído com êxito status.
STATUS_PENDING
O subsistema do WSK não pôde recuperar o endereço de transporte remoto para o soquete imediatamente. O subsistema WSK concluirá o IRP depois de recuperar o endereço de transporte remoto do soquete. O status da operação de recuperação será retornado no campo IoStatus.Status do IRP.
STATUS_INVALID_DEVICE_STATE
O soquete não está conectado a um endereço de transporte remoto. O IRP será concluído com falha status.
STATUS_FILE_FORCED_CLOSED
O soquete não está mais funcional. O IRP será concluído com falha status. O aplicativo WSK deve chamar a função WskCloseSocket para fechar o soquete o mais rápido possível.
Outros códigos status
Ocorreu um erro. O IRP será concluído com falha status.

Comentários

Um aplicativo WSK pode chamar a função WskGetRemoteAddress somente em um soquete de fluxo ou orientado para conexão que tenha sido conectado a um endereço de transporte remoto. Um soquete de fluxo é conectado a um endereço de transporte remoto chamando a função WskConnect . Um soquete orientado à conexão é conectado a um endereço de transporte remoto de uma das seguintes maneiras:

  • O aplicativo WSK chama a função WskConnect .
  • O aplicativo WSK cria, associa e conecta o soquete chamando a função WskSocketConnect .
  • O subsistema WSK conecta o soquete quando o aplicativo WSK aceita uma solicitação de conexão de entrada em um soquete de escuta.
Se a função WskGetRemoteAddress retornar STATUS_PENDING, o buffer apontado pelo parâmetro RemoteAddress deverá permanecer válido até que o IRP seja concluído. Se o aplicativo WSK alocou o buffer com uma das funções ExAllocateXxx, ele não poderá liberar a memória com a função ExFree Xxx correspondente até que o IRP seja concluído. Se o aplicativo WSK alocou o buffer na pilha, ele não poderá retornar da função que chama a função WskGetRemoteAddress até que o IRP seja concluído.

Requisitos

Requisito Valor
Cliente mínimo com suporte Disponível no Windows Vista e versões posteriores dos sistemas operacionais Windows.
Plataforma de Destino Universal
Cabeçalho wsk.h (inclua Wsk.h)
IRQL <= DISPATCH_LEVEL

Confira também

SOCKADDR

WSK_PROVIDER_CONNECTION_DISPATCH

WSK_PROVIDER_STREAM_DISPATCH

WSK_SOCKET

WskAccept

WskAcceptEvent

WskBind

WskCloseSocket

WskConnect

WskGetLocalAddress

WskSocketConnect