共用方式為


PFN_WSK_DISCONNECT回呼函式 (wsk.h)

WskDisconnect 函式會中斷連線導向或數據流套接字與遠端傳輸地址的連線。

語法

PFN_WSK_DISCONNECT PfnWskDisconnect;

NTSTATUS PfnWskDisconnect(
  [in]           PWSK_SOCKET Socket,
  [in, optional] PWSK_BUF Buffer,
  [in]           ULONG Flags,
  [in, out]      PIRP Irp
)
{...}

參數

[in] Socket

WSK_SOCKET 結構的指標,指定中斷連線之套接字的套接字物件。

[in, optional] Buffer

WSK_BUF 結構的指標。 此結構描述數據緩衝區,其中包含 WSK 子系統在套接字中斷連線之前要傳輸至遠端傳輸地址的數據。 如果沒有這類資料要傳輸,WSK 應用程式會將此指標設定為 NULL。 如果在 Flags 參數中指定 WSK_FLAG_ABORTIVE,Buffer 參數必須是 NULL

[in] Flags

包含下列旗標或零的 ULONG 值:

WSK_FLAG_ABORTIVE

指示 WSK 子系統執行套接字的中止中斷連線。 如果 WSK 應用程式未指定此旗標,WSK 子系統將會執行套接字的正常中斷連線。

[in, out] Irp

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

傳回值

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

傳回碼 Description
STATUS_SUCCESS
套接字已成功與遠端傳輸位址中斷連線。 IRP 將會以成功狀態完成。
STATUS_PENDING
WSK 子系統無法立即中斷套接字連線。 WSK 子系統在中斷套接字與遠端傳輸地址的連線之後,將會完成 IRP。 中斷聯機作業的狀態將會在 IRP 的 [IoStatus.Status ] 欄位中傳回。
STATUS_FILE_FORCED_CLOSED
套接字已不再運作。 IRP 將會以失敗狀態完成。 WSK 應用程式必須呼叫 WskCloseSocket 函式,才能儘快關閉套接字。
其他狀態代碼
發生錯誤。 IRP 將會以失敗狀態完成。

備註

WSK 應用程式只能在連線導向或數據流套接字上呼叫 WskDisconnect 函式,該函式之前已連線到遠端傳輸位址,或在接聽套接字上接受的套接字上。

WskDisconnect 會導致 WSK 子系統透過任何適合基礎傳輸的方式通知遠端傳輸位址,讓連線中斷連線。 如果 Buffer 參數為非 NULL,WSK 子系統會在中斷套接字連線之前,先將緩衝區中的數據傳送至遠端傳輸位址。

如果執行正常中斷連線,WSK 子系統會等到所有未完成的傳輸數據都已傳送,再中斷套接字連線。 套接字中斷連線之後,WSK 應用程式就無法將任何其他數據傳送至遠端傳輸位址。 不過,WSK 應用程式仍然可以從遠端傳輸位址接收其他數據,直到遠端應用程式中斷其套接字結尾的連線為止。

請注意,並非所有傳輸都支援半開啟的連線。 如果傳輸不支援半開啟的連線,則執行正常中斷連線之後,WSK 應用程式將不會接收來自遠端傳輸位址的任何其他數據。

透過正常中斷連線,只有在傳輸通訊協定完全完成中斷連線作業時,才會完成 IRP。 對於某些傳輸通訊協定,如果傳送數據到遠端傳輸位址時發生問題,IRP 可能無法完成。 在此情況下,WSK 應用程式可以再次呼叫 WskDisconnect 函式並指定WSK_FLAG_ABORTIVE旗標,或藉由呼叫 WskCloseSocket 函式來復原。 不論是哪一種情況,WSK 子系統都會中止中斷套接字的連線,並強制完成擱置的 IRP。

如果執行中止的中斷連線,WSK 子系統會取消所有進行中和擱置中的傳輸作業,而且不會等待中斷套接字的連線。 中止中斷連線之後,WSK 應用程式就無法將任何其他數據傳送至遠端傳輸位址,或從遠端傳輸位址接收任何其他數據。

WSK 應用程式可以藉由呼叫 WskCloseSocket 函式完全關閉連線。

規格需求

需求
最低支援的用戶端 可在 Windows Vista 和更新版本的 Windows 作業系統中使用。
目標平台 Universal
標頭 wsk.h (包含 Wsk.h)
IRQL <= DISPATCH_LEVEL

另請參閱

WSK_BUF

WSK_PROVIDER_CONNECTION_DISPATCH

WSK_PROVIDER_STREAM_DISPATCH

WSK_SOCKET

WskCloseSocket

WskConnect

WskDisconnectEvent

WskSocketConnect