Freigeben über


LPWSPCLEANUP-Rückruffunktion (ws2spi.h)

Die LPWSPCleanup-Funktion beendet die Verwendung des Windows Sockets-Dienstanbieters.

Syntax

LPWSPCLEANUP Lpwspcleanup;

int Lpwspcleanup(
  [out] LPINT lpErrno
)
{...}

Parameter

[out] lpErrno

Zeiger auf den Fehlercode.

Rückgabewert

Der Rückgabewert ist 0, wenn der Vorgang erfolgreich initiiert wurde. Andernfalls wird der Wert SOCKET_ERROR zurückgegeben, und eine bestimmte Fehlernummer ist in lpErrno verfügbar.

Fehlercode Bedeutung
WSANOTINITIALISIERT
Vor der Verwendung dieser Funktion muss ein erfolgreicher **WSPStartup**- Aufruf erfolgen.
WSAENETDOWN
Beim Netzwerksubsystem ist ein Fehler aufgetreten.
WSAEINVAL
Der Anbieterbezeichner für den Namensraumanbieter wird nicht vom Name-Space-Anbieter verwaltet.

Hinweise

Der Windows Sockets 2 SPI-Client ist erforderlich, um einen erfolgreichen WSPStartup-Aufruf auszuführen, bevor er Winsock-Dienstanbieter verwenden kann. Wenn die Verwendung von Winsock-Dienstanbietern abgeschlossen ist, ruft der SPI-Client LPWSPCleanup auf, um die Registrierung bei einem Winsock-Dienstanbieter aufzuheben und dem Dienstanbieter zu ermöglichen, alle Ressourcen freizugeben, die im Auftrag des Windows Sockets 2-Clients zugewiesen wurden. Es ist zulässig, dass SPI-Clients mehr als einen WSPStartup-Aufruf ausführen. Für jeden WSPStartup-Aufruf wird auch ein entsprechender LPWSPCleanup-Aufruf ausgegeben. Nur das endgültige LPWSPCleanup für den Dienstanbieter führt die eigentliche Bereinigung durch; Die vorherigen Aufrufe dekrementieren einfach eine interne Verweisanzahl im Winsock-Dienstanbieter.

Wenn die anzahl der internen Verweise 0 erreicht und die tatsächlichen Bereinigungsvorgänge beginnen, werden alle ausstehenden blockierenden oder asynchronen Aufrufe, die von einem Thread in diesem Prozess ausgegeben werden, abgebrochen, ohne Benachrichtigungen zu veröffentlichen oder Ereignisobjekte zu signalisieren. Alle ausstehenden überlappenden Sende- und Empfangsvorgänge (LPWSPSend, LPWSPSendTo, LPWSPRecv, LPWSPRecvFrom mit einem überlappenden Socket), die von einem beliebigen Thread in diesem Prozess ausgegeben werden, werden ebenfalls abgebrochen, ohne das Ereignisobjekt festzulegen oder die Vervollständigungsroutine zu aufrufen, sofern angegeben. In diesem Fall schlagen die ausstehenden überlappenden Vorgänge mit dem fehler status WSA_OPERATION_ABORTED fehl. Alle Beim Aufruf von LPWSPCleanup geöffneten Sockets werden zurückgesetzt und automatisch so aufgehoben, als ob LPWSPCloseSocket aufgerufen wurde. Sockets, die mit LPWSPCloseSocket geschlossen wurden, aber weiterhin ausstehende Daten aufweisen, die gesendet werden sollen, sind nicht betroffen, aber die ausstehenden Daten werden weiterhin gesendet.

Diese Funktion sollte erst zurückgegeben werden, wenn die Dienstanbieter-DLL für das Entladen aus dem Arbeitsspeicher vorbereitet ist. Insbesondere müssen alle noch zu übertragenden Daten entweder bereits gesendet oder für die Übertragung durch Teile des Transportstapels in die Warteschlange gestellt werden, die nicht zusammen mit der DLL des Dienstanbieters aus dem Arbeitsspeicher entladen werden.

Ein Winsock-Dienstanbieter muss bereit sein, einen Prozess zu verarbeiten, der beendet wird, ohne LPWSPCleanup zu aufrufen (z. B. aufgrund eines Fehlers). Ein Winsock-Dienstanbieter muss sicherstellen, dass LPWSPCleanup die Dinge in einem Zustand belässt, in dem die Ws2_32.dll WSPStartup sofort aufrufen kann, um die Winsock-Nutzung wiederherzustellen.

Anforderungen

   
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Kopfzeile ws2spi.h

Weitere Informationen

LPWSPCloseSocket

LPWSPShutdown

WSPStartup