Compartir a través de


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.

Nota TDI no se admitirá en versiones de Microsoft Windows después de Windows Vista. En su lugar, use windows Filtering Platform o Winsock Kernel .
 

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

Operaciones de control de cliente de WSK

WSK_CLIENT

WSK_PROVIDER_DISPATCH

WSK_PROVIDER_NPI

WSK_TRANSPORT

WskCaptureProviderNPI