Поделиться через


функция обратного вызова PFN_WSK_CONTROL_CLIENT (wsk.h)

Функция WskControlClient выполняет операции управления для клиентского объекта WSK.

Синтаксис

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
)
{...}

Параметры

[in] Client

Указатель на структуру WSK_CLIENT, возвращаемую с помощью параметра WskProviderNpi функции WskCaptureProviderNPI.

[in] ControlCode

Операция управления, выполняемая. Приложение WSK может указать один из следующих кодов управления:

WSK_TRANSPORT_LIST_QUERY

Получение списка доступных сетевых транспортных средств.

WSK_TRANSPORT_LIST_CHANGE

Получение уведомления об изменении списка доступных сетевых транспортных средств.

WSK_CACHE_SD

Получите кэшированную копию дескриптора безопасности.

WSK_RELEASE_SD

Выпустите кэшированную копию дескриптора безопасности.

WSK_SET_STATIC_EVENT_CALLBACKS

Включить указанные функции обратного вызова событий автоматически на всех сокетах.

WSK_TDI_DEVICENAME_MAPPING

Сопоставляйте сочетания семейства адресов, типа сокета и протокола с именами устройств транспортов TDI.

WSK_TDI_BEHAVIOR

Определите, будет ли подсистема WSK перенаправляет сетевые ввода-вывода в транспортов TDI.

[in] InputSize

Количество байтов данных в буфере, на которое указывает параметр InputBuffer.

[in, optional] InputBuffer

Выделенный вызывающим буфером, предоставляющий входные данные, необходимые для выполнения указанной операции управления. Если входные данные не требуются для указанной операции управления, приложение WSK должно задать для этого параметра значение NULL и задать для параметра InputSize значение нулю.

[in] OutputSize

Размер буфера в байтах, на который указывает параметр OutputBuffer.

[out, optional] OutputBuffer

Выделенный вызывающим буфер, который получает все выходные данные, возвращаемые указанной операцией управления. Если выходные данные не возвращаются указанной операцией управления, приложение WSK должно задать для этого параметра значение NULL и задать для параметра OutputSize значение нулю.

[out, optional] OutputSizeReturned

Указатель на переменную типа ULONG, которая получает количество байтов данных, возвращаемых в буфере, на который указывает параметр OutputBuffer. Приложение WSK должно задать этот указатель на NULL, за исключением случаев, когда все из следующих значений имеют значение true:

  • Параметр IrpNULL.
  • Операция, выполняемая, возвращает выходные данные в буфере, на который указывает параметр OutputBuffer.
  • Число байтов выходных данных, возвращаемых операцией, которая выполняется, неизвестна.

[in, out] Irp

Указатель на выделенный вызывающим методом IRP, используемый подсистемой WSK для асинхронной операции управления. Дополнительные сведения об использовании irPs с функциями WSK см. в разделе Использование irPs с функциями ядра Winsock.

Этот параметр является обязательным, необязательным или должен быть nullв зависимости от конкретной операции управления клиентом, выполняемой. Дополнительные сведения о требованиях к этому параметру для каждой из поддерживаемых операций управления клиентом см. в операциях управления клиентом WSK.

Возвращаемое значение

WskControlClient возвращает один из следующих кодов NTSTATUS:

Возвращаемый код Описание
STATUS_SUCCESS Операция управления завершилась успешно. Если приложение WSK указало указатель на IRP в параметре Irp, IRP завершится с состоянием успешности.
STATUS_PENDING Подсистема WSK не могла немедленно завершить операцию управления. Подсистема WSK завершит IRP после завершения операции управления. Состояние операции управления будет возвращено в поле IoStatus.Status IRP.
STATUS_BUFFER_OVERFLOW Выходной буфер недостаточно велик, чтобы содержать возвращаемые данные. Переменная, на которую указывает параметр outputSizeReturned , содержит требуемый размер буфера.
Другие коды состояния Произошла ошибка. IRP будет завершен с состоянием сбоя.

Замечания

Дополнительные сведения о том, как используются входные и выходные буферы для каждой операции управления клиентом, см. в разделе операции управления клиентом WSK.

Если функция WskControlClient возвращает STATUS_PENDING, все буферы, на которые указывает параметр InputBuffer или параметр OutputBuffer должен оставаться допустимым до завершения IRP. Если приложение WSK выделило буферы с одной из функций exAllocate Xxx, она не может освободить память с соответствующей функцией ExFree Xxx до завершения IRP. Если приложение WSK выделило буферы в стеке, оно не может вернуться из функции, которая вызывает функцию WskControlClient до завершения IRP.

примечание TDI не будет поддерживаться в версиях Microsoft Windows после Windows Vista. Вместо этого используйте платформы фильтрации Windows или ядра Winsock.
 

Требования

Требование Ценность
минимальные поддерживаемые клиентские Доступно в Windows Vista и более поздних версиях операционных систем Windows.
целевая платформа Всеобщий
заголовка wsk.h (include Wsk.h)
IRQL <= DISPATCH_LEVEL

См. также

операции управления клиентом WSK

WSK_CLIENT

WSK_PROVIDER_DISPATCH

WSK_PROVIDER_NPI

WSK_TRANSPORT

WskCaptureProviderNPI