RxCeSend 函式 (rxce.h)

RxCeSend 會沿著虛擬線路上指定的連線, (TSDU) 傳送傳輸服務數據單位。

語法

NTSTATUS RxCeSend(
  [in] IN PRXCE_VC pVc,
  [in] IN ULONG    SendOptions,
  [in] IN PMDL     pMdl,
  [in] IN ULONG    SendLength,
  [in] IN PVOID    pCompletionContext
);

參數

[in] pVc

要傳送 TSDU 之虛擬線路的指標。

[in] SendOptions

傳輸在此傳送作業上傳輸數據所需的選項。 請注意,這隻是傳送至傳輸的要求。 傳輸可能只支援指定的選項數目有限,而且不支援忽略選項。 SendOptions 參數是由 rxce.h 中定義的一組位所組成。 SendOptions 參數可以是下列位的組合:

RXCE_SEND_EXPEDITED

指定的數據應該在傳輸目前保留佇列以在此端點對端點連線上進行傳輸的任何一般傳送要求之前傳送。 如果傳輸不支援加速傳輸,它可以忽略此旗標。 請注意,RXCE_SEND_EXPEDITED相當於 TDI TDI_SEND_EXPEDITED 旗標。

RXCE_SEND_NO_RESPONSE_EXPECTED

呼叫端會向基礎傳輸提供提示,指出其不會預期從其遠端節點對等端傳送此傳送的回應。 此旗標應該停用遠端節點傳輸的 TSDU 通知的 Piggybacking。 請注意,RXCE_SEND_NO_RESPONSE_EXPECTED相當於 TDI_SEND_NO_RESPONSE_EXPECTED 旗標。

RXCE_SEND_NON_BLOCKING

如果基礎傳輸目前沒有指定數據可用的內部緩衝區空間,它應該只會使用 STATUS_DEVICE_NOT_READY 來完成 IRP。 如果傳輸有一些可用的緩衝區空間,它應該從用戶端提供的緩衝區複製最多數據、將 IoStatus.Information 成員設定為複製的位元元組數目,並使用STATUS_SUCCESS完成 IRP。

這個旗標與不會在內部傳送緩衝區的傳輸無關。 請注意,RXCE_SEND_NON_BLOCKING相當於 TDI_SEND_NON_BLOCKING 旗標。

RXCE_SEND_PARTIAL

表示是否要完整傳送RX_MEM_DESC (MDL) ,或只傳送部分。 如果傳輸和 MDL 允許此行為,這個選項會要求傳輸作業允許傳送作業傳輸部分數據。

RXCE_SEND_SYNCHRONOUS

表示傳送作業是否要同步傳輸數據。 設定此選項時,要求會提交至基礎傳輸,而且在要求完成之前,控件不會返回呼叫端。 請注意,設定此位時會忽略 pCompletionContext 參數。

[in] pMdl

要傳送之緩衝區的指標。

[in] SendLength

要傳送的數據長度。

[in] pCompletionContext

SendCompletion 期間傳回給呼叫端的內容,以進行異步操作。 如果 SendOptions 參數要求同步傳送作業,則不會忽略此參數。

傳回值

RxCeSend 會在成功時傳回STATUS_SUCCESS,或在失敗時傳回下列其中一個錯誤碼:

傳回碼 Description
STATUS_CONNECTION_DISCONNECTED
指定了無效或中斷連線的虛擬線路或連線
STATUS_INSUFFICIENT_RESOURCES
此例程所需的非分頁集區內存配置失敗。
STATUS_INVALID_PARAMETER
根據指定的 SendOptions在 SendLength 參數中傳遞了無效的長度。

備註

RxCeSend 例程會配置 IRP、建置基礎傳輸驅動程式的傳送要求,並將要求提交至 TDI。 如果是同步傳送作業,此例程也會在例程完成時配置免費的 IRP 和資源。

在 RxCeSend 中使用的 SendOptions 參數中所指出的異步和同步選項會區分兩種情況。 在異步案例中,當要求成功提交至基礎傳輸之後,控件就會返回呼叫端。 任何指定要求的結果會使用 SendCompletion 回 呼例程來傳回。 RxCeSend 中的 pCompletionContext 參數會在回呼例程中傳回,以協助呼叫端釐清要求。

在同步案例中,要求會提交至基礎傳輸,而且控件在要求完成之前不會返回呼叫端。 請注意,在同步案例中, 會忽略 pCompletionContext 參數,而傳回的狀態會對應至作業的完成狀態。

異步和同步選項的優點取決於基礎傳輸。 在虛擬線路環境中 (TCP,例如) ,同步選項表示控件在數據到達伺服器之前不會傳回。 另一方面,針對數據報導向傳輸 (UDP,例如) ,這兩個選項之間的差異很小。

規格需求

需求
目標平台 桌面
標頭 rxce.h (包括 Rxce.h、Tdi.h)
IRQL <= APC_LEVEL

另請參閱

MDL

RxCeSendDatagram