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


структура 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

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