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


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

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

Синтаксис

PFN_WSK_INSPECT_EVENT PfnWskInspectEvent;

WSK_INSPECT_ACTION PfnWskInspectEvent(
  [in, optional] PVOID SocketContext,
  [in]           PSOCKADDR LocalAddress,
  [in]           PSOCKADDR RemoteAddress,
  [in, optional] PWSK_INSPECT_ID InspectID
)
{...}

Параметры

[in, optional] SocketContext

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

[in] LocalAddress

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

[in] RemoteAddress

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

[in, optional] InspectID

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

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

Функция обратного вызова событий WskInspectEvent приложения WSK может возвращать одно из следующих WSK_INSPECT_ACTION значений:

Код возврата Описание
WskInspectAccept
Входящий запрос на подключение принимается.
WskInspectReject
Входящий запрос на подключение отклоняется.
WskInspectPend
Приложению WSK не удалось определить, следует ли немедленно принять или отклонить входящий запрос на подключение.

Комментарии

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

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

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

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

Структуры SOCKADDR , на которые указывают параметры LocalAddress и RemoteAddress , действительны только в течение всего вызова функции обратного вызова события WskInspectEvent . Если приложение WSK возвращает WskInspectPend из функции обратного вызова события WskInspectEvent и ему требуются эти транспортные адреса во время оставшейся части проверки, оно должно скопировать содержимое этих структур в собственные структуры SOCKADDR перед возвратом из функции обратного вызова события WskInspectEvent .

Подсистема WSK вызывает функцию обратного вызова события WskInspectEvent приложения WSK в IRQL <= DISPATCH_LEVEL.

Функция обратного вызова событий WskInspectEvent приложения WSK не должна ждать завершения других запросов WSK в контексте функций завершения WSK или обратного вызова событий. Обратный вызов может инициировать другие запросы WSK (при условии, что он не тратит слишком много времени на DISPATCH_LEVEL), но не должен ждать их завершения, даже если обратный вызов вызывается в IRQL = PASSIVE_LEVEL.

Требования

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

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

SOCKADDR

WSK_CLIENT_LISTEN_DISPATCH

WSK_INSPECT_ID

WskAbortEvent

WskAccept

WskAcceptEvent

WskCloseSocket

WskControlSocket

WskInspectComplete

WskSocket