Compartilhar via


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 à 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 de WSK_SOCKET que especifica o objeto socket 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 por 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 do WSK, consulte Usando IRPs com funções de kernel winsock.

Valor de retorno

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 o status de êxito.
STATUS_PENDING
O subsistema do WSK não pôde recuperar o endereço de transporte remoto do 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 o status de falha.
STATUS_FILE_FORCED_CLOSED
O soquete não está mais funcional. O IRP será concluído com o status de falha. O aplicativo WSK deve chamar a função WskCloseSocket para fechar o soquete o mais rápido possível.
Outros códigos de status
Ocorreu um erro. O IRP será concluído com o status de falha.

Observações

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 ExFreeXxx 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
de cliente com suporte mínimo Disponível no Windows Vista e versões posteriores dos sistemas operacionais Windows.
da Plataforma de Destino Universal
cabeçalho wsk.h (inclua Wsk.h)
IRQL <= DISPATCH_LEVEL

Consulte também

SOCKADDR

WSK_PROVIDER_CONNECTION_DISPATCH

WSK_PROVIDER_STREAM_DISPATCH

WSK_SOCKET

WskAccept

WskAcceptEvent

WskBind

WskCloseSocket

WskConnect

WskGetLocalAddress

WskSocketConnect