Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Функция обратного вызова событий 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 , чтобы закрыть сокет прослушивания как можно скорее.
Возвращаемое значение
Функция обратного вызова событий WSK приложения WskInspectEvent может возвращать одно из следующих WSK_INSPECT_ACTION значений:
| Код возврата | Description |
|---|---|
|
Входящий запрос на подключение принимается. |
|
Входящий запрос на подключение отклоняется. |
|
Приложение WSK не может определить, должен ли входящий запрос на подключение приниматься или отклоняться немедленно. |
Замечания
Подсистема WSK вызывает функцию обратного вызова событий WSK приложения WSKInspectEvent в сокете прослушивания с включенным условным режимом приема. Приложение WSK может включить режим условного принятия в сокете прослушивания, включив параметр SO_CONDITIONAL_ACCEPT сокета. Дополнительные сведения об условном принятии входящих подключений см. в разделе "Прослушивание и прием входящих подключений".
Если приложение WSK возвращает WskInspectAccept из функции обратного вызова событий WskInspectEvent , подсистема WSK продолжает устанавливать подключение сокета. Подсистема WSK возвращает сокет в приложение WSK, выполнив вызов функции WskAccept или вызвав функцию обратного вызова события WSK приложения WskAcceptEvent, если функция обратного вызова события включена. Если входящие запросы подключения удаляются до полного установления подключения сокета, подсистема WSK вызывает функцию обратного вызова события WSK приложения WskAbortEvent .
Если приложение 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 вызывает функцию обратного вызова событий WSK приложения WSKInspectEvent в IRQL <= DISPATCH_LEVEL.
Функция обратного вызова событий WSK приложения WSKInspectEvent не должна ждать завершения других запросов WSK в контексте функций завершения WSK или обратного вызова событий. Обратный вызов может инициировать другие запросы WSK (если он не тратит слишком много времени на DISPATCH_LEVEL), но он не должен ждать завершения даже при вызове обратного вызова в IRQL = PASSIVE_LEVEL.
Требования
| Требование | Ценность |
|---|---|
| Минимальный поддерживаемый клиент | Доступно в Windows Vista и более поздних версиях операционных систем Windows. |
| целевая платформа | Windows |
| Header | wsk.h (include Wsk.h) |
| IRQL | <= DISPATCH_LEVEL |