共用方式為


PFN_WSK_SEND_TO回呼函式 (wsk.h)

WskSendTo 函式會將數據報數據傳送至遠端傳輸位址。

語法

PFN_WSK_SEND_TO PfnWskSendTo;

NTSTATUS PfnWskSendTo(
  [in]           PWSK_SOCKET Socket,
  [in]           PWSK_BUF Buffer,
                 ULONG Flags,
  [in, optional] PSOCKADDR RemoteAddress,
  [in]           ULONG ControlInfoLength,
  [in, optional] PCMSGHDR ControlInfo,
  [in, out]      PIRP Irp
)
{...}

參數

[in] Socket

WSK_SOCKET 結構的指標,指定要在其中傳送數據報之數據報套接字的套接字物件。

[in] Buffer

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

Flags

此參數保留供系統使用。 WSK 應用程式必須將此參數設定為零。

[in, optional] RemoteAddress

結構的指標,指定要傳送數據報的遠端傳輸位址。 此指標必須是特定 SOCKADDR 結構類型的指標,對應至建立套接字時所指定的 WSK 應用程式所指定的位址系列。

如果 WSK 應用程式已設定資料報套接字的固定遠端傳輸位址或固定目的地傳輸位址,則此指標是選擇性的,而且可能 NULL。 如果 NULL,則數據報會傳送至固定遠端傳輸位址或固定目的地傳輸位址。 如果非NULL,則數據報會傳送至指定的遠端傳輸位址。

如需設定數據報套接字固定遠端傳輸位址的詳細資訊,請參閱 SIO_WSK_SET_REMOTE_ADDRESS

如需設定數據報套接字固定目的地傳輸地址的詳細資訊,請參閱 SIO_WSK_SET_SENDTO_ADDRESS

[in] ControlInfoLength

ControlInfo 參數所指向之緩衝區中的數據位元組數目。 如果沒有與數據報相關聯的控件資訊,ControlInfoLength 參數必須是零。

[in, optional] ControlInfo

緩衝區的指標,其中包含與所傳送之數據報相關聯的控件資訊。 控件信息數據是由一或多個控件數據物件所組成,每個物件都是以 CMSGHDR 結構開頭。 如果沒有與資料報相關聯的控制項資訊,此參數應該 NULL

[in, out] Irp

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

傳回值

WskSendTo 會傳回下列其中一個 NTSTATUS 程式代碼:

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

言論

如果 WskSendTo 函式傳回STATUS_PENDING,Buffer 參數所指向之 WSK_BUF 結構中所述的 MDL 鏈結必須保持鎖定在記憶體中,直到 IRP 完成為止。 此外,ControlInfo 參數所指向的緩衝區也必須保持有效,直到 IRP 完成為止。 如果 WSK 應用程式使用其中一個 ExAllocateXxx 函式配置 MDL 鏈結或控制資訊緩衝區,則除非 IRP 完成之後,才能釋放具有對應 ExFreeXxx 函式的記憶體。 如果 WSK 應用程式配置了 MDL 鏈結或堆疊上的控件資訊緩衝區,它就無法從呼叫 WskSendTo 函式的函式傳回,直到 IRP 完成之後。

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

要求

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

另請參閱

CMSGHDR

SOCKADDR

WSK_BUF

WSK_PROVIDER_DATAGRAM_DISPATCH

WSK_SOCKET

WskCloseSocket

WskControlSocket

WskReceiveFrom

WskReceiveFromEvent