LPWSPCLEANUP 回呼函式 (ws2spi.h)
LPWSPCleanup函式會終止使用 Windows Sockets 服務提供者。
語法
LPWSPCLEANUP Lpwspcleanup;
int Lpwspcleanup(
[out] LPINT lpErrno
)
{...}
參數
[out] lpErrno
錯誤碼的指標。
傳回值
如果已成功起始作業,則傳回值為零。 否則會傳回值SOCKET_ERROR,而且 lpErrno中提供特定的錯誤號碼。
錯誤碼 | 意義 |
---|---|
使用這個函式之前,必須先進行 成功的 **WSPStartup** 呼叫。 | |
網路子系統失敗。 | |
提供給名稱空間提供者的提供者識別碼不是由名稱空間提供者所管理。 |
備註
Windows Sockets 2 SPI 用戶端必須先執行成功的 WSPStartup 呼叫,才能使用 Winsock 服務提供者。 當它完成使用 Winsock 服務提供者時,SPI 用戶端會呼叫 LPWSPCleanup ,以從 Winsock 服務提供者取消註冊本身,並允許服務提供者釋放代表 Windows Sockets 2 用戶端配置的任何資源。 SPI 用戶端允許進行一個以上的 WSPStartup 呼叫。 針對每個 WSPStartup 呼叫,也會發出對應的 LPWSPCleanup 呼叫。 只有服務提供者的最終 LPWSPCleanup 才會進行實際的清除;上述呼叫只會遞減 Winsock 服務提供者中的內部參考計數。
當內部參考計數達到零且實際清除作業開始時,此進程中任何執行緒發出的擱置封鎖或非同步呼叫都會取消,而不會張貼任何通知訊息或發出任何事件物件的訊號。 任何擱置重迭的傳送和接收作業, (LPWSPSend、 LPWSPSendTo、 LPWSPRecv、 LPWSPRecvFrom 與重迭通訊端) 在此進程中的任何執行緒,也會取消,而不需設定事件物件,或在指定時叫用完成常式。 在此情況下,擱置重迭的作業會失敗,並出現錯誤狀態WSA_OPERATION_ABORTED。 呼叫 LPWSPCleanup 時開啟的任何通訊端都會重設,並自動解除配置,就像呼叫 LPWSPCloseSocket 一樣;已使用 LPWSPCloseSocket 關閉但仍要傳送暫止資料的通訊端不會受到影響,但仍會傳送暫止的資料。
此函式應該不會傳回,直到服務提供者 DLL 準備好從記憶體卸載為止。 特別是,任何剩餘要傳輸的資料都必須已經傳送或排入佇列,以供傳輸堆疊的一部分傳送,而該部分不會從記憶體和服務提供者的 DLL 卸載。
例如,Winsock 服務提供者必須準備好處理終止的程式,而不叫用 LPWSPCleanup (,因為發生錯誤) 。 Winsock 服務提供者必須確保 LPWSPCleanup 會讓 Ws2_32.dll 立即叫用 WSPStartup 以重新建立 Winsock 使用量的狀態。
規格需求
最低支援的用戶端 | Windows 2000 Professional [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限桌面應用程式] |
標頭 | ws2spi.h |