共用方式為


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 設定為 NdkGetPrivilegedMemoryRegionTokenNDK_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 成員設定為由 NdkGetPrivilegedMemoryRegionTokenNDK_FN_GET_PRIVILEGED_MEMORY_REGION_TOKEN) 傳回的令牌時,NDK_SGE 必須包含 NdkBuildLamNDK_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)

另請參閱

NDKPI 物件存留期需求

NDK_FN_BUILD_LAM

NDK_FN_GET_PRIVILEGED_MEMORY_REGION_TOKEN

NDK_FN_READ

NDK_FN_RECEIVE

NDK_FN_SEND

NDK_FN_SRQ_RECEIVE

NDK_FN_WRITE

NDK_LOGICAL_ADDRESS_MAPPING