Udostępnij za pośrednictwem


Zdarzenia systemu Winsock

Podsystem jądra Winsock (WSK) może asynchronicznie powiadamiać aplikację WSK, gdy wystąpią pewne zdarzenia gniazda, takie jak w przypadku odebrania nowych danych w gniazdie lub odłączenia gniazda. Aby aplikacja WSK była asynchronicznie powiadamiana o zdarzeniach gniazd, aplikacja WSK musi zaimplementować odpowiednie funkcje wywołania zwrotnego zdarzeń i włączyć te funkcje wywołania zwrotnego zdarzeń na tworzonych gniazdach.

Uwaga Aplikacja WSK nie jest wymagana do implementowania ani używania funkcji zwrotnych zdarzeń. Aplikacja WSK może wykonywać większość operacji gniazda WSK, wywołując odpowiednie funkcje gniazda WSK. Jedyną funkcją WSK, która wymaga używania funkcji wywołania zwrotnego zdarzeń, jest tryb warunkowego akceptowania na gniazdach nasłuchiwania. Aby uzyskać więcej informacji na temat zalet i wad korzystania z funkcji WSK w porównaniu z używaniem funkcji wywołania zwrotnego zdarzeń, zobacz Używanie funkcji jądra Winsock kontra funkcji wywołania zwrotnego zdarzeń.

Każda kategoria gniazd WSK obsługuje inny zestaw zdarzeń gniazda.

Gniazda podstawowe

Gniazda podstawowe nie obsługują żadnych zdarzeń związanych z gniazdami.

Gniazda nasłuchiwania

Zdarzenie Funkcja wywołania zwrotnego zdarzeń

Zaakceptowano połączenie przychodzące.

WskAcceptEvent

Przybyło przychodzące żądanie połączenia.

WskInspectEvent

Żądanie połączenia przychodzącego zostało porzucone.

WskAbortEvent

* Dotyczy tylko gniazd nasłuchiwania z włączonym trybem akceptowania warunkowego. Aby uzyskać więcej informacji na temat korzystania z trybu akceptowania warunkowego z gniazdami nasłuchiwania, zobacz Nasłuchiwanie i akceptowanie połączeń przychodzących.

Gniazda datagramów

Zdarzenie Funkcja wywołania zwrotnego zdarzeń

Odebrano co najmniej jeden nowy datagram.

WskReceiveFromEvent

Gniazda zorientowane na połączenie

Zdarzenie Funkcja wywołania zwrotnego zdarzeń

Odebrano nowe dane.

WskReceiveEvent

Gniazdo zostało odłączone.

WskDisconnectEvent

Idealny rozmiar listy prac wysyłania został zmieniony.

WskSendBacklogEvent

Gdy aplikacja WSK tworzy gniazdo, funkcje wywołania zwrotnego zdarzeń gniazda są domyślnie wyłączone. Aplikacja WSK musi włączyć funkcje zwrotne zdarzeń gniazda, aby podsystem WSK mógł je wywołać w przypadku wystąpienia zdarzeń gniazda. Aby uzyskać więcej informacji na temat włączania i wyłączania funkcji wywołania zwrotnego zdarzeń gniazda, zobacz Włączanie i wyłączanie funkcji wywołania zwrotnego zdarzeń.

Jeśli aplikacja WSK rejestruje interfejs rozszerzenia dla gniazda, interfejs rozszerzenia może obsługiwać dodatkowe zdarzenia. Aby uzyskać więcej informacji na temat rejestrowania interfejsu rozszerzenia dla gniazda, zobacz Rejestrowanie interfejsu rozszerzenia.

Podsystem WSK może również powiadamiać aplikację WSK o zdarzeniach, które nie są specyficzne dla określonego gniazda. Aby aplikacja WSK mogła otrzymywać powiadomienia o tych zdarzeniach, aplikacja WSK musi zaimplementować funkcję wywołania zwrotnego zdarzeń WskClientEvent . Obecnie nie zdefiniowano żadnych zdarzeń, które nie są specyficzne dla określonego gniazda. Funkcja wywołania zwrotnego zdarzenia WskClientEvent aplikacji WSK jest zawsze włączona i nie można jej wyłączyć.

Funkcje wywołania zwrotnego zdarzeń aplikacji WSK nie mogą czekać na ukończenie innych żądań WSK w kontekście uzupełniania WSK lub funkcji wywołania zwrotnego zdarzeń. Wywołanie zwrotne może zainicjować inne żądania WSK, przy założeniu, że nie spędza zbyt dużo czasu na poziomie DISPATCH_LEVEL lub nie wyczerpie stosu jądra, ale nie może czekać na ich ukończenie, nawet gdy wywołanie zwrotne jest wywoływane przy IRQL = PASSIVE_LEVEL.