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_OP_FLAG_INLINE 旗標的工作要求中使用 NDK_SGE 結構時,MemoryRegionToken 可能無效。 如需有關 MemoryRegionToken的詳細資訊,請參閱一節。
言論
NDK_SGE 結構會指定傳送、接收、讀取和寫入工作要求的本機緩衝區。
當 MemoryRegionToken 成員設定為由 NdkGetPrivilegedMemoryRegionToken (NDK_FN_GET_PRIVILEGED_MEMORY_REGION_TOKEN) 傳回的令牌時,NDK_SGE 必須包含 NdkBuildLam (NDK_FN_BUILD_LAM) 函式所傳回的邏輯位址,且具有 NDK_LOGICAL_ADDRESS_MAPPING 結構。 請注意,AdapterPageArray 中的連續專案NDK_LOGICAL_ADDRESS_MAPPING 成員不一定是配接器邏輯位址空間中的連續頁面。 因此,NDK 取用者可能會使用多個 SG 來涵蓋配接器頁面陣列中的所有頁面。
當 MemoryRegionToken 成員中的令牌不等於 NdkGetPrivilegedMemoryRegionToken所傳回的令牌時,NDK_SGE 結構必須包含位於先前註冊記憶體區域的虛擬位址範圍內的虛擬位址。
當 NDK_SGE 結構用於具有 NDK_OP_FLAG_INLINE 旗標的工作要求中時,MemoryRegionToken 中的令牌可能無效,因此 NDK 提供者必須忽略它。 指定 NDK_OP_FLAG_INLINE 旗標時,VirtualAddress 傳遞至工作要求函式之任何 NDK_SGE 結構的成員,必須指向 NDK 提供者在 IRQL 中可存取的緩衝區小於或等於 DISPATCH_LEVEL。 也就是說,在工作要求函式傳回之前,必須保證緩衝區會常駐於物理記憶體中。 在單一呼叫中傳遞至提供者的內嵌數據大小總計不能超過 InlineDataSize 參數中的值,而該參數是在建立佇列組 (QP) 時指定的。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | 不支援,在 NDIS 6.30 和更新版本中支援。 |
支援的最低伺服器 | Windows Server 2012 |
標頭 | ndkpi.h (包括 Ndkpi.h) |