KSALLOCATOR_FRAMING结构 (ks.h)

KSALLOCATOR_FRAMING结构用于查询帧要求并提交分配器创建请求。

语法

typedef struct {
  union {
    ULONG OptionsFlags;
    ULONG RequirementsFlags;
  };
#if ...
  POOL_TYPE PoolType;
#else
  ULONG     PoolType;
#endif
  ULONG     Frames;
  ULONG     FrameSize;
  union {
    ULONG FileAlignment;
    LONG  FramePitch;
  };
  ULONG     Reserved;
} KSALLOCATOR_FRAMING, *PKSALLOCATOR_FRAMING;

成员

OptionsFlags

指定在为连接点创建分配器期间指定的分配器选项标志。 OptionsFlags 成员可以包含以下值之一。

OptionsFlags 描述
KSALLOCATOR_OPTIONF_COMPATIBLE 指示所创建的分配器的框架选项与下游分配器兼容。 为复制缓冲区分配就地修饰符时,通常指定此选项。 如果不需要筛选器来修改给定帧,则它可以将帧提交到下游筛选器,而无需在指定此选项时从下游分配器分配其他帧。
KSALLOCATOR_OPTIONF_SYSTEM_MEMORY 指示系统内存应用于分配。 指定后,分配器必须根据 PoolType 成员中指定的分配池分配内存。 否则,假定接收器提供系统地址映射到设备上的 RAM 或其他形式的存储。

RequirementsFlags

一个 ULONG 类型的值,用于描述此连接点的查询作分配器要求。 RequirementsFlags 成员可以包含以下值。

标志值 描述
KSALLOCATOR_REQUIREMENTF_INPLACE_MODIFIER 指示连接点可以执行就地修改。
KSALLOCATOR_REQUIREMENTF_SYSTEM_MEMORY 指示连接点需要系统内存进行分配。 如果未设置此选项,则假定接收器提供系统地址空间映射到设备上的 RAM 或其他形式的存储。
KSALLOCATOR_REQUIREMENTF_FRAME_INTEGRITY 指示连接点要求下游筛选器维护指定帧的数据完整性。
KSALLOCATOR_REQUIREMENTF_MUST_ALLOCATE 指示连接点要求它分配发送的任何帧。
KSALLOCATOR_REQUIREMENTF_PREFERENCES_ONLY 指示“要求”标志只是首选项,并且连接点能够分配不符合这些规范的帧。

PoolType

POOL_TYPE 类型的结构,指定内核模式分配池类型。

Frames

指定允许的未完成帧总数。 零表示筛选器对此成员没有要求。

FrameSize

指定框架的总大小,包括前缀和后缀。 零表示筛选器对此成员没有要求。

FileAlignment

ULONG 类型的值,描述分配帧时要使用的字节对齐方式。 下表描述了几个可能的对齐值。

价值 描述
FILE_BYTE_ALIGNMENT 1 字节对齐
FILE_WORD_ALIGNMENT 2 字节对齐
FILE_LONG_ALIGNMENT 4 字节对齐
FILE_32_BYTE_ALIGNMENT 32 字节对齐
FILE_64_BYTE_ALIGNMENT 64 字节对齐

FramePitch

Reserved

保留供系统使用。 设置为零。

言论

使用KSALLOCATOR_FRAMING通过IRP_MJ_CREATE将分配器创建请求提交到接收器的句柄。

FileAlignment 成员指定值时,最小分配对齐方式为 1 字节(FILE_BYTE_ALIGNMENT)。 如果可能,充当分配的软件应支持 4 字节对齐(FILE_LONG_ALIGNMENT)。

要求

要求 价值
标头 ks.h (包括 Ks.h)

另请参阅

KsCreateAllocator