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


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

Функция WskInspectComplete завершает проверку ранее выполненного входящего запроса на подключение, полученного в сокете прослушивания с включенным режимом условного принятия.

Синтаксис

PFN_WSK_INSPECT_COMPLETE PfnWskInspectComplete;

NTSTATUS PfnWskInspectComplete(
  [in]      PWSK_SOCKET ListenSocket,
  [in]      PWSK_INSPECT_ID InspectID,
  [in]      WSK_INSPECT_ACTION Action,
  [in, out] PIRP Irp
)
{...}

Параметры

[in] ListenSocket

Указатель на структуру WSK_SOCKET . Этот указатель указывает сокет прослушивания, в котором приложение WSK получило входящий запрос на подключение, который проверяется.

[in] InspectID

Указатель на структуру WSK_INSPECT_ID . Содержимое структуры определяет конкретный запрос на подключение, который проверяет приложение WSK.

[in] Action

Значение типа , указывающее, принимает ли приложение WSK входящий запрос на подключение или отклоняет его. Приложение WSK должно указать WskInspectAccept или WskInspectReject для этого параметра.

[in, out] Irp

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

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

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

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

Комментарии

Приложение WSK вызывает функцию WskInspectComplete для завершения проверки входящего запроса на подключение, для которого функция обратного вызова события WskInspectEvent приложения ранее возвращала WskInspectPend.

Приложение WSK может вызывать функцию WskInspectComplete только в сокете прослушивания с включенным условным режимом приема. Приложение WSK может включить режим условного принятия для прослушивающего сокета, включив параметр сокета SO_CONDITIONAL_ACCEPT . Дополнительные сведения об условном принятии входящих подключений см. в разделах Прослушивание и Прием входящих Connections.

Подсистема WSK передала указатель на структуру WSK_INSPECT_ID приложению WSK при вызове функции обратного вызова события WskInspectEvent приложения. Приложение WSK скопировало содержимое этой структуры в собственную структуру WSK_INSPECT_ID перед возвратом WskInspectPend из функции обратного вызова события WskInspectEvent . Приложение WSK передает указатель на собственную структуру WSK_INSPECT_ID в параметре InspectID при вызове функции WskInspectComplete .

Если приложение WSK указывает WskInspectAccept в параметре Action , подсистема WSK продолжит устанавливать подключение сокета. Подсистема WSK вернет сокет приложению WSK путем выполнения вызова приложением WSK функции WskAccept или вызова функции обратного вызова событий WskAcceptEvent приложения WSK, если она включена. Если входящий запрос на подключение удаляется до того, как подключение сокета будет полностью установлено, подсистема WSK вызовет функцию обратного вызова события WskAbortEvent приложения WSK.

Если приложение WSK указывает WskInspectReject в параметре Action , входящий запрос на подключение удаляется, а подключение к сокету не устанавливается.

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

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

Требования

Требование Значение
Минимальная версия клиента Доступно в Windows Vista и более поздних версиях операционных систем Windows.
Целевая платформа Универсальное
Верхняя часть wsk.h (включая Wsk.h)
IRQL <= DISPATCH_LEVEL

См. также раздел

SO_CONDITIONAL_ACCEPT

WSK_INSPECT_ID

WSK_PROVIDER_LISTEN_DISPATCH

WSK_SOCKET

WskAbortEvent

WskAccept

WskAcceptEvent

WskInspectEvent