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) 。

要求

要求
Header ks.h (包括 Ks.h)

另请参阅

KsCreateAllocator