NDK_FN_SEND_AND_INVALIDATE回呼函式 (ndkpi.h)
NdkSendAndInvalidate (NDK_FN_SEND_AND_INVALIDATE) 函式會在 NDK 佇列配對上張貼傳送要求, (QP) ,並提供在接收完成時在遠端對等端失效的令牌。
語法
NDK_FN_SEND_AND_INVALIDATE NdkFnSendAndInvalidate;
NTSTATUS NdkFnSendAndInvalidate(
[in] NDK_QP *pNdkQp,
[in, optional] PVOID RequestContext,
const NDK_SGE *pSgl,
[in] ULONG nSge,
[in] ULONG Flags,
[in] UINT32 RemoteToken
)
{...}
參數
[in] pNdkQp
NDK 佇列組的指標, (QP) 物件 (NDK_QP) 。
[in, optional] RequestContext
要在此要求之 NDK_RESULT_EX 結構的 RequestContext 成員中傳回的內容值。
pSgl
SGE (NDK_SGE) 結構數位,代表要傳送之數據的緩衝區。
[in] nSge
pSgl 參數中指定的陣列中 SGE 結構數目。
[in] Flags
指定允許之作業的位 OR 旗標。 支援下列旗標:
值 | 意義 |
---|---|
|
如果此要求成功,它就不會在輸出完成佇列中產生完成事件。 不過,如果失敗,它會在輸出完成佇列中產生完成事件。 |
|
在硬體開始處理此要求之前,必須先完成所有先前的讀取要求。 |
|
對等的完成佇列會產生通知。 如需 NDK_OP_FLAG_SEND_AND_SOLICIT_EVENT的詳細資訊,請參閱一節。 |
|
指出 SGE 所參考的記憶體應該內嵌傳輸。 此外,NDK_SGE專案中的MemoryRegionToken值可能無效。 內嵌要求不需要將 SGE 清單中的項目數目限制為建立佇列配對時所指定的 MaxInitiatorRequestSge 值。 內嵌傳輸的記憶體數量必須位於佇列配對的內嵌數據限制內。 |
|
向NDK提供者指出其可能會延遲,指出硬體要求進行處理。 如需此旗標的詳細資訊,請參閱 NDKPI 延遲處理配置。
注意只有 NDKPI 1.2 (Windows Server 2012 R2) 和更新版本才支援此旗標。 |
[in] RemoteToken
接收完成時,在對等端失效的遠端令牌。 如果傳送對等指定了無效的令牌,接收對等端的 NDK 提供者必須中止連線,如較低層傳輸規則所指定。
傳回值
NdkSendAndInvalidate 函式會傳回下列其中一個 NTSTATUS 代碼。
傳回碼 | Description |
---|---|
|
要求已成功張貼。 完成專案會在工作要求完成時,排入完成佇列 (CQ) 。 |
|
佇列組 (QP) 未連線。 |
|
發生錯誤。 |
備註
如果您發出多個相關的傳送要求,您可以使用 NDK_OP_FLAG_SEND_AND_SOLICIT_EVENT 旗標。 在群組的最後一個要求上設定此旗標。
發出多個相關的傳送要求時,NDK 取用者可以使用此旗標。 NDK 取用者只會在最後一個相關的傳送要求上設定此旗標。 對等會以一般方式接收所有傳送要求。 不過,當對等收到最後一個傳送要求時, (NDK_OP_FLAG_SEND_AND_SOLICIT_EVENT旗標 設定) 的要求時,對等的完成佇列會產生通知。 通知會在接收要求完成之後產生。 除非接收者先前已呼叫 NdkArmCq (NDK_FN_ARM_CQ) 函式,且通知類型設為 NDK_CQ_NOTIFY_SOLICITED,否則此旗標對等 (對等) 沒有任何意義。
因為呼叫此函式而加入完成佇列的任何NDK_RESULT_EX結構,都必須指定 Type 成員的 NdkOperationTypeSend。 請注意,您不需要指定 NDK_RESULT_EX 結構之 TypeSpecificCompletionOutput 成員的值。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 不支援,NDIS 6.40 和更新版本中支援。 |
最低支援的伺服器 | Windows Server 2012 R2 |
目標平台 | Windows |
標頭 | ndkpi.h (包括 Ndkpi.h) |
IRQL | <=DISPATCH_LEVEL |