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_OP_FLAG_SILENT_SUCCESS
0x00000001
指出此要求成功完成不會在輸出完成佇列中產生完成事件。 不過,失敗的要求會在完成佇列中產生事件。
NDK_OP_FLAG_READ_FENCE
0x00000002
表示在硬體開始處理此要求之前,必須先完成所有先前的讀取要求。
NDK_OP_FLAG_ALLOW_REMOTE_READ
0x00000008
針對任何已連線的對等,啟用記憶體區域的讀取許可權。 若要存取記憶體區域,連接的對等必須具有有效的令牌。
NDK_OP_FLAG_ALLOW_LOCAL_WRITE
0x00000010
允許對記憶體區域的本機寫入存取。
NDK_OP_FLAG_ALLOW_REMOTE_WRITE
0x00000030
針對任何已連線的對等,啟用記憶體區域的寫入許可權。 若要存取記憶體區域,連接的對等必須具有有效的令牌。
NDK_OP_FLAG_DEFER
0x00000200
向NDK提供者指出其可能會延遲,指出硬體要求進行處理。 如需此旗標的詳細資訊,請參閱 NDKPI 延遲處理配置

注意只有 NDKPI 1.2 (Windows Server 2012 R2) 和更新版本才支援此旗標。

傳回值

NDK_FN_FAST_REGISTER函式會傳回下列其中一個NTSTATUS代碼。

傳回碼 Description
STATUS_SUCCESS
要求已成功張貼。 完成專案會在工作要求完成時排入 CQ。
STATUS_CONNECTION_INVALID
QP 未連線。
STATUS_ACCESS_VIOLATION
在快速註冊初始化期間,記憶體區域並未初始化為遠端訪問, 但指定NDK_OP_FLAG_ALLOW_REMOTE_READNDK_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

另請參閱

NDKPI 延後處理配置

NDKPI 工作要求張貼需求

NDK_ADAPTER_INFO

NDK_FN_GET_REMOTE_TOKEN_FROM_MR

NDK_LOGICAL_ADDRESS

NDK_MR

NDK_QP

NDK_RESULT