PFN_WSK_CONTROL_CLIENT función de devolución de llamada (wsk.h)
La función WskControlClient realiza operaciones de control en un objeto de cliente WSK.
Sintaxis
PFN_WSK_CONTROL_CLIENT PfnWskControlClient;
NTSTATUS PfnWskControlClient(
[in] PWSK_CLIENT Client,
[in] ULONG ControlCode,
[in] SIZE_T InputSize,
[in, optional] PVOID InputBuffer,
[in] SIZE_T OutputSize,
[out, optional] PVOID OutputBuffer,
[out, optional] SIZE_T *OutputSizeReturned,
[in, out] PIRP Irp
)
{...}
Parámetros
[in] Client
Puntero a una estructura WSK_CLIENT que se devolvió a través del parámetro WskProviderNpi de la función WskCaptureProviderNPI .
[in] ControlCode
Operación de control que se está realizando. Una aplicación WSK puede especificar uno de los siguientes códigos de control:
WSK_TRANSPORT_LIST_QUERY
Recupere una lista de los transportes de red disponibles.
WSK_TRANSPORT_LIST_CHANGE
Reciba una notificación de un cambio en la lista de transportes de red disponibles.
WSK_CACHE_SD
Obtenga una copia almacenada en caché de un descriptor de seguridad.
WSK_RELEASE_SD
Libere una copia almacenada en caché de un descriptor de seguridad.
WSK_SET_STATIC_EVENT_CALLBACKS
Habilite automáticamente las funciones de devolución de llamada de eventos especificadas en todos los sockets.
WSK_TDI_DEVICENAME_MAPPING
Asigne combinaciones de familia de direcciones, tipo de socket y protocolo a los nombres de dispositivo de los transportes TDI .
WSK_TDI_BEHAVIOR
Controlar si el subsistema WSK desviará la E/S de red a los transportes TDI .
[in] InputSize
Número de bytes de datos en el búfer al que apunta el parámetro InputBuffer .
[in, optional] InputBuffer
Búfer asignado por el autor de la llamada que proporciona los datos de entrada necesarios para realizar la operación de control especificada. Si no se necesita ningún dato de entrada para la operación de control especificada, la aplicación WSK debe establecer este parámetro en NULL y establecer el parámetro InputSize en cero.
[in] OutputSize
Tamaño, en bytes, del búfer al que apunta el parámetro OutputBuffer .
[out, optional] OutputBuffer
Búfer asignado por el autor de la llamada que recibe los datos de salida devueltos por la operación de control especificada. Si la operación de control especificada no devuelve ningún dato de salida, la aplicación WSK debe establecer este parámetro en NULL y establecer el parámetro OutputSize en cero.
[out, optional] OutputSizeReturned
Puntero a una variable con tipo ULONG que recibe el número de bytes de datos devueltos en el búfer al que apunta el parámetro OutputBuffer . Una aplicación WSK debe establecer este puntero en NULL , excepto cuando se cumplen todas las siguientes condiciones:
- El parámetro Irp es NULL.
- La operación que se realiza devuelve datos de salida en el búfer al que apunta el parámetro OutputBuffer .
- El número de bytes de datos de salida devueltos por la operación que se está realizando es desconocido.
[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 control 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.
Este parámetro es obligatorio, es opcional o debe ser NULL, dependiendo de la operación de control de cliente concreta que se está realizando. Para obtener más información sobre los requisitos de este parámetro para cada una de las operaciones de control de cliente admitidas, vea Operaciones de control de cliente de WSK.
Valor devuelto
WskControlClient devuelve uno de los siguientes códigos NTSTATUS:
Código devuelto | Descripción |
---|---|
STATUS_SUCCESS | La operación de control se completó correctamente. Si la aplicación WSK especificó un puntero a un IRP en el parámetro Irp , el IRP se completará con el estado correcto. |
STATUS_PENDING | El subsistema WSK no pudo completar la operación de control inmediatamente. El subsistema WSK completará el IRP una vez completada la operación de control. El estado de la operación de control se devolverá en el campo IoStatus.Status del IRP. |
STATUS_BUFFER_OVERFLOW | El búfer de salida no es lo suficientemente grande como para contener los datos devueltos. La variable a la que apunta el parámetro OutputSizeReturned contiene el tamaño de búfer necesario. |
Otros códigos de estado | Se produjo un error. El IRP se completará con el estado de error. |
Comentarios
Para obtener más información sobre cómo se usan los búferes de entrada y salida para cada operación de control de cliente, vea Operaciones de control de cliente de WSK.
Si la función WskControlClient devuelve STATUS_PENDING, los búferes a los que apunta el parámetro InputBuffer o el parámetro OutputBuffer deben permanecer válidos hasta que se complete irP. Si la aplicación WSK asignó los búferes 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ó los búferes de la pila, no puede devolverse de la función que llama a la función WskControlClient 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 |