NDK_SGE 結構 (ndkpi.h)
NDK_SGE 結構會指定 NDK 工作要求的本機緩衝區。
語法
typedef struct _NDK_SGE {
union {
PVOID VirtualAddress;
NDK_LOGICAL_ADDRESS LogicalAddress;
};
ULONG Length;
UINT32 MemoryRegionToken;
} NDK_SGE;
成員
VirtualAddress
虛擬位址。
LogicalAddress
邏輯位址。
Length
緩衝區的長度,以位元組為單位。
MemoryRegionToken
記憶體區域令牌。 當 MemoryRegionToken 設定為 NdkGetPrivilegedMemoryRegionToken (NDK_FN_GET_PRIVILEGED_MEMORY_REGION_TOKEN) 所傳回的令牌時, NDK_SGE 必須包含 LogicalAddress。 當 MemoryRegionToken 不等於 NdkGetPrivilegedMemoryRegionToken 所傳回的令牌時, NDK_SGE 結構必須包含 VirtualAddress。 當 NDK_SGE 結構用於具有 NDK_OP_FLAG_INLINE 旗標的工作要求時, MemoryRegionToken 可能無效。 如需 MemoryRegionToken 的詳細資訊,請參閱一節。
備註
NDK_SGE 結構會指定傳送、接收、讀取和寫入工作要求的本機緩衝區。
當 MemoryRegionToken 成員設定為 NdkGetPrivilegedMemoryRegionToken (NDK_FN_GET_PRIVILEGED_MEMORY_REGION_TOKEN) 傳回的令牌時, NDK_SGE 必須包含 NdkBuildLam ( (NDK_FN_BUILD_LAM) 函式具有 NDK_LOGICAL_ADDRESS_MAPPING 結構的邏輯位址。 請注意,NDK_LOGICAL_ADDRESS_MAPPINGAdapterPageArray 成員中的連續專案不一定是配接器邏輯位址空間中的連續頁面。 因此,NDK 取用者可能會使用多個 SCE 來涵蓋配接器頁面陣列中的所有頁面。
當 MemoryRegionToken 成員中的令牌不等於 NdkGetPrivilegedMemoryRegionToken 所傳回的令牌時, NDK_SGE 結構必須包含落在先前註冊記憶體區域的虛擬位址範圍內。
當 NDK_SGE 結構用於具有 NDK_OP_FLAG_INLINE 旗標的工作要求中時, MemoryRegionToken 中的令牌可能無效,因此 NDK 提供者必須忽略它。 指定NDK_OP_FLAG_INLINE旗標時,任何傳遞至工作要求函式之NDK_SGE結構的 VirtualAddress 成員都必須指向 NDK 提供者可存取的緩衝區,該緩衝區必須小於或等於DISPATCH_LEVEL,也就是說,緩衝區必須保證會駐留在物理記憶體中,直到工作要求函式傳回為止。 在單一呼叫中傳遞至提供者的內嵌數據大小總計不能超過在建立 QP) (佇列配對時所指定的 InlineDataSize 參數中的值。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | NDIS 6.30 和更新版本中不支援,不支援。 |
最低支援的伺服器 | Windows Server 2012 |
標頭 | ndkpi.h (包含 Ndkpi.h) |