共用方式為


PFN_WSK_SEND回呼函式 (wsk.h)

WskSend 函式會透過連線導向或數據流套接字將數據傳送至遠端傳輸位址。

語法

PFN_WSK_SEND PfnWskSend;

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

參數

[in] Socket

WSK_SOCKET 結構的指標,指定用來傳送數據的套接字物件。

[in] Buffer

初始化 WSK_BUF 結構的指標,描述包含透過套接字傳送之數據的數據緩衝區。

[in] Flags

ULONG 值,包含下列旗標組合的位 OR:

WSK_FLAG_NODELAY

指示基礎傳輸立即將數據和任何先前排入佇列的數據傳送至遠端應用程式,而不會延遲。

Microsoft TCP/IP 傳輸通訊協定支援此旗標。 其他傳輸通訊協定可能不支援此旗標。

[in, out] Irp

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

傳回值

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

傳回碼 Description
STATUS_SUCCESS
數據已成功透過套接字傳送。 IRP 將會以成功狀態完成。 IRP 的 IoStatus.Information 字段包含已傳送的位元組數目。
STATUS_PENDING
WSK 子系統無法立即透過套接字傳送數據。 WSK 子系統會在透過套接字傳送數據之後完成 IRP。 傳送作業的狀態將會在 IRP 的 [IoStatus.Status ] 字段中傳回。 如果作業成功,IRP 的 IoStatus.Information 欄位將會包含已傳送的位元組數目。
STATUS_FILE_FORCED_CLOSED
套接字已不再運作。 IRP 將會以失敗狀態完成。 WSK 應用程式必須呼叫 WskCloseSocket 函式,才能儘快關閉套接字。
STATUS_NOT_SUPPORTED
基礎網路傳輸不支援指定的旗標。
其他狀態代碼
發生錯誤。 IRP 將會以失敗狀態完成。

備註

WSK 應用程式只能在先前連線到遠端傳輸地址的連接導向或數據流套接字上呼叫 WskSend 函式。 線上導向套接字會透過下列其中一種方法連線到遠端傳輸位址:

  • WSK 應用程式會呼叫 WskConnect 函式來連接套接字。
  • WSK 應用程式會藉由呼叫 WskSocketConnect 函式來建立、系結及連接套接字。
  • 當 WSK 應用程式接受接聽套接字上的連入連線要求時,WSK 子系統會連接套接字。
如果 WskSend 函式傳回STATUS_PENDING,則 Buffer 參數所指向之WSK_BUF結構中所述的 MDL 鏈結必須維持在記憶體中鎖定,直到 IRP 完成為止。

WSK 子系統在透過套接字傳送數據時,不會執行任何數據緩衝處理。 因此,WSK 子系統將不會完成對 WskSend 函式的呼叫,直到實際傳送所有數據為止。

規格需求

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

另請參閱

WSK_BUF

WSK_PROVIDER_CONNECTION_DISPATCH

WSK_PROVIDER_STREAM_DISPATCH

WSK_SOCKET

WskCloseSocket

WskReceive

WskReceiveEvent