共用方式為


關閉 SAN 通訊端

在連線任一端的 Windows 通訊端切換呼叫 SAN 服務提供者的 WSPCloseSocket 函式之後,SAN 服務提供者會執行下列程式來關閉 SAN 通訊端:

  1. 連線任一端的每個 SAN 服務提供者都會終止連線並完成接收要求-- WSPRecv 函式呼叫,方法是在 lpErrno 參數傳回適當的錯誤碼。 例如,SAN 服務提供者會傳回 WSAECONNRESET,以指出遠端對等重設連線。

    每個 SAN 服務提供者也會發出關閉 SAN 通訊端擱置重迭作業的完成訊號。 SAN 服務提供者會呼叫 WPUCompleteOverlappedRequest 函式,以發出重迭作業完成的訊號。 在此呼叫中,SAN 服務提供者會將指標傳遞給與重迭作業相關聯的 WSAOVERLAPPED 結構。 SAN 服務提供者也會傳遞WSA_OPERATION_ABORTED錯誤碼,以指定因為 SAN 通訊端已關閉而取消重迭的作業。 在發出重迭作業完成訊號之前,SAN 服務提供者應該釋放作業所需的任何記憶體。

  2. 在 SAN 服務提供者完成對前面加上 WPU 的函式呼叫--使用透過WPUCreateSocketHandle up-call 取得之 SAN 通訊端的控制碼對參數進行呼叫之後,SAN 服務提供者必須呼叫WPUCloseSocketHandle函式來關閉通訊端控制碼,以對交換器進行最後的呼叫。 SAN 服務提供者接著會清除與 SAN 通訊端相關的一切。 向上呼叫是來自交換器向上呼叫分派資料表的函式呼叫。 參數會在呼叫 SAN 服務提供者的 WSPStartupEx 函式以開始使用提供者時,提供這個向上呼叫分派資料表的指標。

只要 SAN 服務提供者執行上述程式來關閉 SAN 通訊端,交換器就會處理所有其他專案。

為了避免 SAN 服務提供者與起始通訊端關閉的交換器之間的競爭狀況,SAN 服務提供者應該永遠不會釋放與 SAN 通訊端相關的資料結構,直到交換器呼叫 WSPCloseSocket為止。