SO_WSK_EVENT_CALLBACK

Mit der Option SO_WSK_EVENT_CALLBACK Sockets kann eine WSK-Anwendung die Ereignisrückruffunktionen eines Sockets aktivieren und deaktivieren. Diese Socketoption gilt nur für lauschende Sockets, Datagrammsockets, verbindungsorientierte Sockets und Basissockets, die eine Erweiterungsschnittstelle registriert haben, für die mindestens eine Ereignisrückruffunktion definiert ist.

Wenn eine WSK-Anwendung diese Socketoption verwendet, um Ereignisrückruffunktionen für einen lauschenden Socket oder einen Datagrammsocket zu aktivieren oder zu deaktivieren, muss sie dies tun, nachdem der Socket an eine lokale Transportadresse gebunden wurde.

Wenn eine WSK-Anwendung diese Socketoption verwendet, um Ereignisrückruffunktionen für einen verbindungsorientierten Socket zu aktivieren oder zu deaktivieren, muss sie dies tun, nachdem der Socket mit einer Remotetransportadresse verbunden wurde.

Um Ereignisrückruffunktionen für einen Socket zu aktivieren oder zu deaktivieren, ruft eine WSK-Anwendung die WskControlSocket-Funktion mit den folgenden Parametern auf.

Parameter Wert

Requesttype

WskSetOption

ControlCode

SO_WSK_EVENT_CALLBACK

Level

SOL_SOCKET

InputSize

sizeof(WSK_EVENT_CALLBACK_CONTROL)

Inputbuffer

Ein Zeiger auf eine WSK_EVENT_CALLBACK_CONTROL-Struktur

OutputSize

0

OutputBuffer

NULL

OutputSizeReturned

NULL

Eine WSK-Anwendung gibt keinen Zeiger auf eine IRP an, wenn die WskControlSocket-Funktion aufgerufen wird , um Ereignisrückruffunktionen für einen Socket zu aktivieren.

Eine WSK-Anwendung kann optional einen Zeiger auf einen IRP angeben, wenn die WskControlSocket-Funktion aufgerufen wird , um eine Ereignisrückruffunktion für einen Socket zu deaktivieren.

Wenn eine WSK-Anwendung WskControlSocket aufruft, um eine Ereignisrückruffunktion zu deaktivieren, verhält sich das WSK-Subsystem wie folgt:

  • Wenn keine laufenden Aufrufe der Ereignisrückruffunktion vorhanden sind, die deaktiviert wird, wenn die WSK-Anwendung die WskControlSocket-Funktion aufruft , wird die Ereignisrückruffunktion deaktiviert, und die WskControlSocket-Funktion gibt STATUS_SUCCESS zurück. Wenn die WSK-Anwendung einen IRP angibt, wird das IRP erfolgreich status abgeschlossen.

  • Wenn es laufende Aufrufe der Ereignisrückruffunktion gibt, die deaktiviert wird, wenn die WSK-Anwendung die WskControlSocket-Funktion aufruft und die WSK-Anwendung ein IRP angegeben hat, gibt die WskControlSocket-Funktion STATUS_PENDING zurück. Das WSK-Subsystem deaktiviert die Ereignisrückruffunktion und schließt die IRP ab, nachdem alle laufenden Aufrufe der Ereignisrückruffunktion zurückgegeben wurden.

  • Wenn es laufende Aufrufe der Ereignisrückruffunktion gibt, die deaktiviert wird, wenn die WSK-Anwendung die WskControlSocket-Funktion aufruft und die WSK-Anwendung kein IRP angegeben hat, gibt die WskControlSocket-Funktion STATUS_EVENT_PENDING zurück. Das WSK-Subsystem deaktiviert die Ereignisrückruffunktion, nachdem alle laufenden Aufrufe der Ereignisrückruffunktion zurückgegeben wurden.

Beim Aktivieren oder Deaktivieren einer der standardmäßigen WSK-Ereignisrückruffunktionen legt eine WSK-Anwendung den NpiId-Member der WSK_EVENT_CALLBACK_CONTROL-Struktur auf einen Zeiger auf den WSK-Bezeichner der Netzwerkprogrammierschnittstelle (NPI) fest, NPI_WSK_INTERFACE_ID.

Beim Aktivieren oder Deaktivieren von Rückruffunktionen für eine Erweiterungsschnittstelle legt eine WSK-Anwendung den NpiId-Member der WSK_EVENT_CALLBACK_CONTROL-Struktur auf einen Zeiger auf den NPI-Bezeichner für diese Erweiterungsschnittstelle fest.

Beim Aktivieren von Ereignisrückruffunktionen kann eine WSK-Anwendung gleichzeitig eine beliebige Kombination der Ereignisrückruffunktionen aktivieren, die für eine bestimmte Kategorie von WSK-Socket gültig sind. Die WSK-Anwendung aktiviert diese Kombinationen gleichzeitig, indem das EventMask-Element der WSK_EVENT_CALLBACK_CONTROL-Struktur auf ein bitweises OR der Ereignisflags für alle aktivierten Ereignisrückruffunktionen festgelegt wird.

Beim Deaktivieren von Ereignisrückruffunktionen muss eine WSK-Anwendung jede Ereignisrückruffunktion unabhängig voneinander deaktivieren. Eine WSK-Anwendung deaktiviert unabhängig eine Ereignisrückruffunktion, indem das EventMask-Element der WSK_EVENT_CALLBACK_CONTROL-Struktur auf ein bitweises OR des Ereignisflags für die deaktivierte Ereignisrückruffunktion und das WSK_EVENT_DISABLE-Flag festgelegt wird.

In der folgenden Tabelle sind die gültigen Ereignisflags für einen lauschenden Socket aufgeführt.

Ereignisflag Ereignisrückruffunktion

WSK_EVENT_ACCEPT

WskAcceptEvent

Die folgende Tabelle zeigt die gültigen Ereignisflags für einen Datagrammsocket.

Ereignisflag Ereignisrückruffunktion

WSK_EVENT_RECEIVE_FROM

WskReceiveFromEvent

Die folgende Tabelle zeigt die gültigen Ereignisflags für einen verbindungsorientierten Socket.

Ereignisflag Ereignisrückruffunktion

WSK_EVENT_DISCONNECT

WskDisconnectEvent

WSK_EVENT_RECEIVE

WskReceiveEvent

WSK_EVENT_SEND_BACKLOG

WskSendBacklogEvent

Ein Lauschsocket kann automatisch Ereignisrückruffunktionen für verbindungsorientierte Sockets aktivieren, die vom lauschenden Socket akzeptiert werden. Eine WSK-Anwendung aktiviert diese Rückruffunktionen automatisch, indem die verbindungsorientierten Socketereignisrückruffunktionen im lauschenden Socket aktiviert werden. Die Ereignisrückruffunktionen werden in einem akzeptierten verbindungsorientierten Socket nur dann automatisch aktiviert, wenn der Socket von der WskAcceptEvent-Ereignisrückruffunktion des lauschenden Sockets akzeptiert wird. Wenn der verbindungsorientierte Socket von der WskAccept-Funktion des lauschenden Sockets akzeptiert wird, werden die Ereignisrückruffunktionen des akzeptierten Sockets nicht automatisch aktiviert.

Nachdem verbindungsorientierte Ereignisrückruffunktionen für einen Lauschocket aktiviert wurden, können sie nicht auf dem Lauschocket deaktiviert werden. Wenn die WskAcceptEvent-Ereignisrückruffunktion deaktiviert und dann auf einem Lauschocket wieder aktiviert wird, werden alle verbindungsorientierten Ereignisrückruffunktionen, die ursprünglich für diesen Lauschocket aktiviert wurden, weiterhin auf alle verbindungsorientierten Sockets angewendet, die von der WskAcceptEvent-Ereignisrückruffunktion akzeptiert werden.

Weitere Informationen zum Aktivieren und Deaktivieren der Ereignisrückruffunktionen eines Sockets finden Sie unter Aktivieren und Deaktivieren von Ereignisrückruffunktionen.

Requirements (Anforderungen)

Version

Verfügbar in Windows Vista und höheren Versionen der Windows-Betriebssysteme.

Header

Wsk.h (einschließen von Wsk.h)