PFN_WSK_GET_LOCAL_ADDRESS función de devolución de llamada (wsk.h)
La función WskGetLocalAddress recupera la dirección de transporte local de un socket.
Sintaxis
PFN_WSK_GET_LOCAL_ADDRESS PfnWskGetLocalAddress;
NTSTATUS PfnWskGetLocalAddress(
[in] PWSK_SOCKET Socket,
[out] PSOCKADDR LocalAddress,
[in, out] PIRP Irp
)
{...}
Parámetros
[in] Socket
Puntero a una estructura WSK_SOCKET que especifica el objeto de socket para el socket que se está consultando.
[out] LocalAddress
Puntero a un búfer asignado por el autor de la llamada que recibe la dirección de transporte local 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 especificó la aplicación WSK cuando creó 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
WskGetLocalAddress devuelve uno de los siguientes códigos NTSTATUS:
Código devuelto | Descripción |
---|---|
|
La dirección de transporte local del socket se recuperó correctamente. El IRP se completará con el estado correcto. |
|
El subsistema WSK no pudo recuperar la dirección de transporte local del socket inmediatamente. El subsistema WSK completará el IRP después de recuperar la dirección de transporte local del socket. El estado de la operación de recuperación se devolverá en el campo IoStatus.Status del IRP. |
|
El socket no está enlazado a una dirección de transporte local. El IRP se completará con el estado de error. |
|
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. |
|
Se produjo un error. El IRP se completará con el estado de error. |
Comentarios
Una aplicación WSK puede llamar a la función WskGetLocalAddress solo en un socket enlazado a una dirección de transporte local.
Un socket de escucha, datagrama o secuencia está enlazado a una dirección de transporte local cuando la aplicación WSK llama a la función WskBind .
Un socket orientado a la conexión se enlaza a una dirección de transporte local de una de las siguientes maneras:
- La aplicación WSK llama a la función WskBind .
- La aplicación WSK crea, enlaza y conecta el socket mediante una llamada a la función WskSocketConnect .
- El subsistema WSK enlaza el socket cuando la aplicación WSK acepta una solicitud de conexión entrante en un socket de escucha.
Si la función WskGetLocalAddress devuelve STATUS_PENDING, el búfer al que apunta el parámetro LocalAddress 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 podrá 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 WskGetLocalAddress hasta 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 |