Share via


SOCK_NOTIFY_REGISTRATION-Struktur (winsock2.h)

Stellt informationen dar, die für die ProcessSocketNotifications-Funktion bereitgestellt werden.

Weitere Informationen und Codebeispiele finden Sie unter Winsock Socketstatusbenachrichtigungen.

Syntax

typedef struct SOCK_NOTIFY_REGISTRATION {
  SOCKET socket;
  PVOID  completionKey;
  UINT16 eventFilter;
  UINT8  operation;
  UINT8  triggerFlags;
  DWORD  registrationResult;
} SOCK_NOTIFY_REGISTRATION;

Member

socket

Typ: SOCKET

Ein Handle für einen Winsock-Socket, der von einer der Funktionen WSASocket, Socket, WSAAccept, accept oder WSADuplicateSocket geöffnet wird. Es werden nur Sockets des Microsoft Winsock-Anbieters unterstützt.

completionKey

Typ: PVOID

Der Wert, der im dwCompletionKey-Parameter der PostQueuedCompletionStatus-Funktion verwendet werden soll, wenn Benachrichtigungen im Namen des Sockets gesendet werden. Dieser Parameter wird bei der Erstellung der Registrierung verwendet. Um den Vervollständigungsschlüssel zu ändern, entfernen Sie die Registrierung, und registrieren Sie ihn erneut.

eventFilter

Typ: UINT16

Eine Reihe von Flags, die die angeforderten Benachrichtigungen angibt. Dies muss mindestens einer der folgenden Werte (definiert in WinSock2.h) sein.

SOCK_NOTIFY_REGISTER_EVENT_NONE. Benachrichtigungen sollten nicht ausgegeben werden. SOCK_NOTIFY_REGISTER_EVENT_IN. Eine Benachrichtigung sollte ausgegeben werden, wenn Daten ohne Blockierung gelesen werden können. SOCK_NOTIFY_REGISTER_EVENT_OUT. Eine Benachrichtigung sollte ausgegeben werden, wenn Daten ohne Blockierung geschrieben werden können. SOCK_NOTIFY_REGISTER_EVENT_HANGUP. Eine Benachrichtigung sollte ausgegeben werden, wenn eine streamorientierte Verbindung entweder getrennt oder abgebrochen wurde. SOCK_NOTIFY_REGISTER_EVENTS_ALL. Hat den Wert (SOCK_NOTIFY_REGISTER_EVENT_IN | SOCK_NOTIFY_REGISTER_EVENT_OUT | SOCK_NOTIFY_REGISTER_EVENT_HANGUP).

operation

Typ: UINT8

Gibt den Vorgang an, der bei einer Registrierung ausgeführt werden soll. Es kann höchstens ein Vorgang gleichzeitig ausgeführt werden. Diese Werte werden in WinSock2.hdefiniert.

SOCK_NOTIFY_OP_NONE. Es sollten keine Registrierungsvorgänge durchgeführt werden. Verwenden Sie dies, wenn Ihre Anwendung ProcessSocketNotifications aufruft und nur am Empfang von Benachrichtigungen interessiert ist. SOCK_NOTIFY_OP_ENABLE. Aktiviert die Registrierung. Benachrichtigungen dürfen erst wieder aktiviert werden, wenn die SOCK_NOTIFY_EVENT_DISABLE Benachrichtigung empfangen wird. SOCK_NOTIFY_OP_DISABLE. Deaktiviert die Registrierung, zerstört aber nicht die zugrunde liegenden Datenstrukturen. Beachten Sie, dass dadurch die Registrierung nicht entfernt wird, sondern lediglich das Anstehen neuer Benachrichtigungen unterdrückt wird. Benachrichtigungen, die bereits in die Warteschlange gestellt wurden, werden möglicherweise noch übermittelt, bis das SOCK_NOTIFY_EVENT_DISABLE-Ereignis empfangen wird. SOCK_NOTIFY_OP_REMOVE. Entfernt eine zuvor registrierte Benachrichtigung. Sowohl aktivierte als auch deaktivierte Benachrichtigungen können entfernt werden. Die SOCK_NOTIFY_EVENT_REMOVE Benachrichtigung wird ausgestellt, mit der Garantie, dass danach keine weiteren Benachrichtigungen für diesen Abschlussschlüssel ausgestellt werden, es sei denn, er wird erneut registriert.

triggerFlags

Typ: UINT8

Eine Reihe von Flags, die das Triggerverhalten angibt (definiert in WinSock2.h).

SOCK_NOTIFY_TRIGGER_ONESHOT. Die Registrierung wird bei Zustellung der nächsten Benachrichtigung deaktiviert (nicht entfernt). SOCK_NOTIFY_TRIGGER_PERSISTENT. Die Registrierung bleibt aktiv, bis sie explizit deaktiviert oder entfernt wird. SOCK_NOTIFY_TRIGGER_LEVEL. Die Registrierung gilt für level-triggered notifications. Nicht kompatibel mit Edge-Triggern. Eine von edge- oder level-triggered muss angegeben werden. SOCK_NOTIFY_TRIGGER_EDGE. Die Registrierung ist für Edge-ausgelöste Benachrichtigungen. Nicht kompatibel mit level-triggered. Eine von edge- oder level-triggered muss angegeben werden.

Benachrichtigungen werden nur bereitgestellt, wenn die Registrierung aktiviert ist. Benachrichtigungen werden nicht in die Warteschlange gestellt, während die Registrierung deaktiviert ist. Da Benachrichtigungen für einen bestimmten Socket in die Warteschlange gestellt werden, werden sie zu einer einzigen Benachrichtigung zusammengefasst. Daher können mehrere Ereignisse durch eine einzelne Ereignismaske für den Socket beschrieben werden.

Wenn die Registrierung aktiviert ist, werden level-triggerte Benachrichtigungen immer dann bereitgestellt, wenn die gewünschten Bedingungen erfüllt sind.

Wenn die Registrierung aktiviert ist, werden Edge-ausgelöste Benachrichtigungen immer dann bereitgestellt, wenn sich eine Bedingung von "Nicht halten" in "Halten" ändert. Die Bedingung muss sich ändern, während die Registrierung aktiviert ist, damit eine Benachrichtigung in die Warteschlange gestellt wird. Daher muss der Empfangspuffer des Sockets nach der Registrierung vollständig entladen werden, um sicherzustellen, dass eine Benachrichtigung empfangen wird.

registrationResult

Typ: DWORD

Nach einem erfolgreichen Aufruf von ProcessSocketNotifications enthält registrationResult einen Code, der den Erfolg oder Fehler der Registrierung angibt. Der Wert ERROR_SUCCESS gibt an, dass die Registrierung erfolgreich war.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 10 Build 20348
Unterstützte Mindestversion (Server) Windows 10 Build 20348
Kopfzeile winsock2.h

Weitere Informationen