Compartir a través de


PFN_WSK_GET_REMOTE_ADDRESS función de devolución de llamada (wsk.h)

La función WskGetRemoteAddress recupera la dirección de transporte remota de un socket de flujo o orientado a la conexión.

Sintaxis

PFN_WSK_GET_REMOTE_ADDRESS PfnWskGetRemoteAddress;

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

Parámetros

[in] Socket

Puntero a una estructura de WSK_SOCKET que especifica el objeto de socket para el socket que se está consultando.

[out] RemoteAddress

Puntero a un búfer asignado por el autor de la llamada que recibe la dirección de transporte remota del socket. El búfer debe encontrarse en memoria no paginada. El búfer también debe ser lo suficientemente grande como para contener el tipo de estructura SOCKADDR específico que corresponde a la familia de direcciones que especificó la aplicación WSK cuando creó el socket.

Para un socket orientado a la conexión que la aplicación WSK aceptó en un socket de escucha, la familia de direcciones es la misma que la familia de direcciones que la aplicación WSK especificó al crear el socket de escucha.

[in, out] Irp

Puntero a un IRP asignado por el autor de la llamada que usa el subsistema WSK para completar la operación de recuperación de forma asincrónica. Para obtener más información sobre el uso de IRP con funciones WSK, consulte Uso de IRP con funciones del kernel de Winsock.

Valor devuelto

WskGetRemoteAddress devuelve uno de los siguientes códigos NTSTATUS:

Código devuelto Descripción
STATUS_SUCCESS
La dirección de transporte remota del socket se recuperó correctamente. El IRP se completará con el estado correcto.
STATUS_PENDING
El subsistema WSK no pudo recuperar la dirección de transporte remota del socket inmediatamente. El subsistema WSK completará el IRP después de recuperar la dirección de transporte remota del socket. El estado de la operación de recuperación se devolverá en el campo IoStatus.Status del IRP.
STATUS_INVALID_DEVICE_STATE
El socket no está conectado a una dirección de transporte remota. El IRP se completará con el estado de error.
STATUS_FILE_FORCED_CLOSED
El socket ya no es funcional. El IRP se completará con el estado de error. La aplicación WSK debe llamar a la función WskCloseSocket para cerrar el socket lo antes posible.
Otros códigos de estado
Se produjo un error. El IRP se completará con el estado de error.

Comentarios

Una aplicación WSK puede llamar a la función WskGetRemoteAddress solo en un socket orientado a la conexión o de flujo que se ha conectado a una dirección de transporte remota. Un socket de flujo está conectado a una dirección de transporte remota mediante una llamada a la función WskConnect . Un socket orientado a la conexión está conectado a una dirección de transporte remota de una de las siguientes maneras:

  • La aplicación WSK llama a la función WskConnect .
  • La aplicación WSK crea, enlaza y conecta el socket mediante una llamada a la función WskSocketConnect .
  • El subsistema WSK conecta el socket cuando la aplicación WSK acepta una solicitud de conexión entrante en un socket de escucha.
Si la función WskGetRemoteAddress devuelve STATUS_PENDING, el búfer al que apunta el parámetro RemoteAddress debe permanecer válido hasta que se complete el IRP. Si la aplicación WSK asignó el búfer con una de las funciones ExAllocateXxx , no puede liberar la memoria con la función ExFreeXxx correspondiente hasta que se complete el IRP. Si la aplicación WSK asignó el búfer en la pila, no puede devolver desde la función que llama a la función WskGetRemoteAddress hasta después de que se complete el IRP.

Requisitos

Requisito Value
Cliente mínimo compatible Disponible en Windows Vista y versiones posteriores de los sistemas operativos Windows.
Plataforma de destino Universal
Encabezado wsk.h (incluya Wsk.h)
IRQL <= DISPATCH_LEVEL

Consulte también

SOCKADDR

WSK_PROVIDER_CONNECTION_DISPATCH

WSK_PROVIDER_STREAM_DISPATCH

WSK_SOCKET

WskAccept

WskAcceptEvent

WskBind

WskCloseSocket

WskConnect

WskGetLocalAddress

WskSocketConnect