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 必须包含由具有 NDK_LOGICAL_ADDRESS_MAPPING 结构的 NdkBuildLamNDK_FN_BUILD_LAM) 函数返回的逻辑地址。 请注意,AdapterPageArray 成员 NDK_LOGICAL_ADDRESS_MAPPING 中的连续条目不一定是适配器逻辑地址空间中的连续页。 因此,NDK 使用者可能使用多个 SG 覆盖适配器页数组中的所有页面。

MemoryRegionToken 成员中的令牌不等于 NdkGetPrivilegedMemoryRegionToken返回的令牌时,NDK_SGE 结构必须包含一个虚拟地址,该地址位于以前注册的内存区域的虚拟地址范围内。

NDK_SGE 结构用于具有 NDK_OP_FLAG_INLINE 标志的工作请求中时,MemoryRegionToken 中的令牌可能无效,因此 NDK 提供程序必须忽略它。 指定 NDK_OP_FLAG_INLINE 标志时,传递给工作请求函数的任何 NDK_SGE 结构的 VirtualAddress 成员必须指向 IRQL 中 NDK 提供程序可以访问的缓冲区小于或等于 DISPATCH_LEVEL, 也就是说,必须保证缓冲区驻留在物理内存中,直到工作请求函数返回。 在单个调用中传递给提供程序的内联数据的总大小不得超过在创建队列对时指定的 inlineDataSize 参数中的值。

要求

要求 价值
最低支持的客户端 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