NDK_FN_FAST_REGISTER回呼函式 (ndkpi.h)
NdkFastRegister (NDK_FN_FAST_REGISTER) 函式會快速註冊現有記憶體區域中的配接器邏輯頁陣列。
語法
NDK_FN_FAST_REGISTER NdkFnFastRegister;
NTSTATUS NdkFnFastRegister(
[in] NDK_QP *pNdkQp,
[in, optional] PVOID RequestContext,
[in] NDK_MR *pMr,
[in] ULONG AdapterPageCount,
const NDK_LOGICAL_ADDRESS *AdapterPageArray,
[in] ULONG FBO,
[in] SIZE_T Length,
[in] PVOID BaseVirtualAddress,
[in] ULONG Flags
)
{...}
參數
[in] pNdkQp
NDK 佇列組的指標, (QP) 物件 (NDK_QP) 。
[in, optional] RequestContext
要在此要求之 NDK_RESULT 結構的 RequestContext 成員中傳回的內容值。
[in] pMr
NDK 記憶體區域的指標, (MR) 物件 (NDK_MR) 初始化以進行快速註冊。
[in] AdapterPageCount
AdapterPageArray 參數中的頁數。 AdapterPageArray 中每個頁面的大小PAGE_SIZE位元組。
AdapterPageArray
配接器邏輯位址陣列 (NDK_LOGICAL_ADDRESS) ,其中每個位址都是頁面的起始邏輯位址。 每個位址都必須對齊長度 PAGE_SIZE 位元組的頁面。 陣列中的連續地址在邏輯位址空間方面不一定連續,但整個數位代表主機系統的觀點中幾乎連續的記憶體區域。
[in] FBO
第一頁內的第一個字節位移 (FBO) 。 已註冊的區域會從這個位移開始。
[in] Length
從 FBO 開始註冊之區域的長度,以位元組為單位。 長度必須小於或等於第一組 (AdapterPageCount 所代表的位元組總數,) AdapterPageArray 陣列中包含的頁面數目減去 FBO。
[in] BaseVirtualAddress
取用者指定的虛擬位址值,參考記憶體區域的第一個字節位置。 這個值必須是 PAGE_SIZE 加上 FBO 的倍數。 因此,允許的值包括 FBO 或 FBO 加上 n 次,其中 n 大於或等於零的 PAGE_SIZE 。 只有在 FBO 為零時,零才會是有效的值。
[in] Flags
旗標的位 OR,指定允許的作業。 支援下列旗標:
值 | 意義 |
---|---|
|
指出此要求成功完成不會在輸出完成佇列中產生完成事件。 不過,失敗的要求會在完成佇列中產生事件。 |
|
表示在硬體開始處理此要求之前,必須先完成所有先前的讀取要求。 |
|
針對任何已連線的對等,啟用記憶體區域的讀取許可權。 若要存取記憶體區域,連接的對等必須具有有效的令牌。 |
|
允許對記憶體區域的本機寫入存取。 |
|
針對任何已連線的對等,啟用記憶體區域的寫入許可權。 若要存取記憶體區域,連接的對等必須具有有效的令牌。 |
|
向NDK提供者指出其可能會延遲,指出硬體要求進行處理。 如需此旗標的詳細資訊,請參閱 NDKPI 延遲處理配置。
注意只有 NDKPI 1.2 (Windows Server 2012 R2) 和更新版本才支援此旗標。 |
傳回值
NDK_FN_FAST_REGISTER函式會傳回下列其中一個NTSTATUS代碼。
傳回碼 | Description |
---|---|
|
要求已成功張貼。 完成專案會在工作要求完成時排入 CQ。 |
|
QP 未連線。 |
|
在快速註冊初始化期間,記憶體區域並未初始化為遠端訪問, 但指定NDK_OP_FLAG_ALLOW_REMOTE_READ 或 NDK_OP_FLAG_ALLOW_REMOTE_WRITE的快速註冊工作要求。 |
|
發生錯誤。 |
備註
NdkFastRegister 會透過已初始化以進行快速註冊的現有記憶體區域,快速註冊配接器邏輯頁陣列。
此呼叫傳回之後,NdkGetRemoteTokenFromMr (NDK_FN_GET_REMOTE_TOKEN_FROM_MR) 函式可以使用遠端訪問的記憶體區域令牌。
NdkFastRegister 不支援以零起始的虛擬位址。
如果未在 NDK_ADAPTER_INFO 結構的 AdapterFlags 成員中設定NDK_ADAPTER_FLAG_RDMA_READ_SINK_NOT_REQUIRED旗標,則當 NDK 取用者在註冊可能作為 RDMA 讀取要求的接收緩衝區時,必須傳遞NDK_OP_FLAG_RDMA_READ_SINK旗標。 某些 NDK 提供者可能需要啟用 RDMA 讀取要求之接收緩衝區的特殊存取許可權。 此旗標可讓這類提供者適當地支持註冊要求。 請注意,緩衝區可能會註冊為多個用途,因此此旗標可能會伴隨其他旗標。
如果 NDK 取用者在NDK_ADAPTER_INFO 結構的AdapterFlags 成員中設定NDK_ADAPTER_FLAG_RDMA_READ_SINK_NOT_REQUIRED旗標的配接器上傳遞NDK_OP_FLAG_RDMA_READ_SINK旗標,則提供者不需要處理NDK_OP_FLAG_RDMA_READ_SINK旗標,而且因為此旗標存在而不能失敗要求。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 不支援,NDIS 6.30 和更新版本中支援。 |
最低支援的伺服器 | Windows Server 2012 |
目標平台 | Windows |
標頭 | ndkpi.h (包括 Ndkpi.h) |
IRQL | <=DISPATCH_LEVEL |