структура SOCK_NOTIFY_REGISTRATION (winsock2.h)
Представляет сведения, предоставляемые функции ProcessSocketNotifications .
Дополнительные сведения и примеры кода см. в разделе Уведомления о состоянии сокета Winsock.
Синтаксис
typedef struct SOCK_NOTIFY_REGISTRATION {
SOCKET socket;
PVOID completionKey;
UINT16 eventFilter;
UINT8 operation;
UINT8 triggerFlags;
DWORD registrationResult;
} SOCK_NOTIFY_REGISTRATION;
Члены
socket
Тип: SOCKET
Дескриптор сокета Winsock, открытого любой из функций WSASocket, socket, WSAAccept, accept или WSADuplicateSocket . Поддерживаются только сокеты поставщика Microsoft Winsock .
completionKey
Тип: PVOID
Значение, используемое в параметре dwCompletionKey функции PostQueuedCompletionStatus при отправке уведомлений от имени сокета. Этот параметр используется при создании регистрации. Чтобы изменить ключ завершения, удалите регистрацию и повторно зарегистрируйте ее.
eventFilter
Тип: UINT16
Набор флагов, указывающих запрашиваемые уведомления. Это должно быть одно или несколько из следующих значений (определенных в WinSock2.h
).
SOCK_NOTIFY_REGISTER_EVENT_NONE. Уведомления не должны выдаваться.
SOCK_NOTIFY_REGISTER_EVENT_IN. Если данные можно прочитать без блокировки, должно быть выдано уведомление.
SOCK_NOTIFY_REGISTER_EVENT_OUT. Уведомление должно быть выдано, если данные могут быть записаны без блокировки.
SOCK_NOTIFY_REGISTER_EVENT_HANGUP. Уведомление должно быть выдано, если потоковое подключение было либо отключено, либо прервано.
SOCK_NOTIFY_REGISTER_EVENTS_ALL. Имеет значение (SOCK_NOTIFY_REGISTER_EVENT_IN | SOCK_NOTIFY_REGISTER_EVENT_OUT | SOCK_NOTIFY_REGISTER_EVENT_HANGUP)
.
operation
Тип: UINT8
Указывает операцию, выполняемую с регистрацией. За один раз может выполняться не более одной операции. Эти значения определяются в WinSock2.h
.
SOCK_NOTIFY_OP_NONE. Операции регистрации выполняться не должны. Используйте это, если приложение вызывает ProcessSocketNotifications и заинтересовано только в получении уведомлений. SOCK_NOTIFY_OP_ENABLE. Включает регистрацию. Уведомления не должны быть повторно включены, пока не будет получено уведомление SOCK_NOTIFY_EVENT_DISABLE . SOCK_NOTIFY_OP_DISABLE. Отключает регистрацию, но не разрушает базовые структуры данных. Обратите внимание, что регистрация не удаляется, а просто подавляет постановку в очередь новых уведомлений. Уведомления, которые уже были поставлены в очередь, могут по-прежнему доставляться до получения события SOCK_NOTIFY_EVENT_DISABLE . SOCK_NOTIFY_OP_REMOVE. Удаляет ранее зарегистрированное уведомление. Как включенные, так и отключенные уведомления могут быть удалены. Уведомление SOCK_NOTIFY_EVENT_REMOVE будет выдано с гарантией того, что после этого больше не будут выдаваться уведомления для этого ключа завершения, если он не будет повторно зарегистрирован.
triggerFlags
Тип: UINT8
Набор флагов, указывающих поведение триггера (определенный в WinSock2.h
).
SOCK_NOTIFY_TRIGGER_ONESHOT. Регистрация будет отключена (не удалена) при доставке следующего уведомления. SOCK_NOTIFY_TRIGGER_PERSISTENT. Регистрация будет оставаться активной до тех пор, пока она не будет явно отключена или удалена. SOCK_NOTIFY_TRIGGER_LEVEL. Регистрация выполняется для уведомлений, активированных на уровне. Несовместимо с пограничным триггером. Необходимо указать один из пограничных или уровней, активированных. SOCK_NOTIFY_TRIGGER_EDGE. Регистрация выполняется для уведомлений, активированных пограничными устройствами. Несовместимо с триггером уровня. Необходимо указать один из пограничных или уровней, активированных.
Уведомления предоставляются только при включенной регистрации. Уведомления не помещаются в очередь, пока регистрация отключена. Так как уведомления помещаются в очередь для заданного сокета, они объединяются в одно уведомление. Таким образом, несколько событий могут быть описаны одной маской событий для сокета.
Если регистрация включена, уведомления с активацией уровня предоставляются всякий раз, когда нужные условия удерживаются.
Если регистрация включена, уведомления, активированные по краям, предоставляются всякий раз, когда условие меняется с не удерживания на удержание. Условие должно измениться, пока регистрация включена для отправки уведомления в очередь. Таким образом, после регистрации буфер получения сокета должен быть полностью очищен, чтобы обеспечить получение уведомления.
registrationResult
Тип: DWORD
После успешного вызова ProcessSocketNotificationsregistrationResult содержит код, указывающий на успешное или неудачное завершение регистрации. Значение ERROR_SUCCESS указывает, что регистрация прошла успешно.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | сборка Windows 10 20348 |
Минимальная версия сервера | сборка Windows 10 20348 |
Верхняя часть | winsock2.h |