共用方式為


PFN_WSK_CLOSE_SOCKET回呼函式 (wsk.h)

WskCloseSocket 函式會關閉套接字並釋放任何相關聯的資源。

語法

PFN_WSK_CLOSE_SOCKET PfnWskCloseSocket;

NTSTATUS PfnWskCloseSocket(
  [in]      PWSK_SOCKET Socket,
  [in, out] PIRP Irp
)
{...}

參數

[in] Socket

WSK_SOCKET 結構的指標,指定要關閉之套接字的套接字物件。

[in, out] Irp

WSK 子系統用來異步完成關閉作業之呼叫端配置的 IRP 指標。 如需搭配 WSK 函式使用 IRP 的詳細資訊,請參閱 搭配 Winsock 核心函式使用 IRP

傳回值

WskCloseSocket 會傳回下列其中一個 NTSTATUS 代碼:

傳回碼 描述
STATUS_SUCCESS
套接字已成功關閉。 IRP 將會以成功狀態完成。
STATUS_PENDING
WSK 子系統無法立即關閉套接字。 WSK 子系統會在關閉套接字之後完成 IRP。 關閉作業的狀態將會在 IRP 的 [IoStatus.Status] 字段中傳回。
其他狀態代碼
發生錯誤。 IRP 將會以失敗狀態完成。

言論

在呼叫 WskCloseSocket 函式之前,WSK 應用程式必須確定沒有任何其他函式呼叫正在進行到任何套接字的函式,包括任何擴充函式,以及應用程式的其他任何線程。 例如,WSK 應用程式不能在一個線程的套接字上呼叫 WskCloseSocket,而 應用程式在另一個線程的相同套接字上呼叫 WskSend。 套接字函式的任何進行中呼叫都必須將控制權傳回 WSK 應用程式,然後才能呼叫 WskCloseSocket 關閉套接字。 不過,WSK 應用程式可以呼叫 WskCloseSocket 如果先前呼叫尚未完成套接字函式的暫止 IRP。

呼叫 WskCloseSocket 函式會導致 WSK 子系統取消並完成套接字函式之前呼叫的所有暫止 IRP。 WSK 子系統也可確保任何進行中的事件回呼函式在關閉套接字之前,已將控制權傳回 WSK 子系統。

在 WSK 應用程式呼叫 WskCloseSocket之後,它不應該對套接字的任何函式進行任何進一步呼叫。

如果 WSK 應用程式將安全性描述元套用至套接字,則呼叫 WskSocketWskSocketConnectWskControlSocket 時未釋放的安全性描述元快取複本。 當不再需要安全性描述元時,WSK 應用程式必須使用 WSK_RELEASE_SD 用戶端控制作業來釋放安全性描述元的快取複本。

WSK 子系統會解除分配套接字套接字物件的記憶體,WSK_SOCKET,這是 WSK 子系統在建立套接字時所配置的。

針對連線導向套接字,除非套接字已在雙向完全中斷聯機,否則 WskCloseSocket 函式一律會執行套接字的中止中斷連線。 若要讓連線導向套接字與遠端傳輸位址正常中斷連線,WSK 應用程式應該呼叫 WskDisconnect 函式。

要求

要求 價值
最低支援的用戶端 可在 Windows Vista 和更新版本的 Windows作系統中使用。
目標平臺 普遍
標頭 wsk.h (包括 Wsk.h)
IRQL <= DISPATCH_LEVEL

另請參閱

WSK_PROVIDER_BASIC_DISPATCH

WSK_PROVIDER_CONNECTION_DISPATCH WSK_PROVIDER_DATAGRAM_DISPATCH

WSK_PROVIDER_LISTEN_DISPATCH

WSK_SOCKET

WskControlSocket

WskDisconnect

WskSocket

WskSocketConnect