KS_FRAMING_ITEM 结构 (ks.h)
KS_FRAMING_ITEM 结构用于声明内核模式引脚上的分配器要求。
语法
typedef struct {
GUID MemoryType;
GUID BusType;
ULONG MemoryFlags;
ULONG BusFlags;
ULONG Flags;
ULONG Frames;
union {
ULONG FileAlignment;
LONG FramePitch;
};
ULONG MemoryTypeWeight;
KS_FRAMING_RANGE PhysicalRange;
KS_FRAMING_RANGE_WEIGHTED FramingRange;
} KS_FRAMING_ITEM, *PKS_FRAMING_ITEM;
成员
MemoryType
指定用于缓冲区和数据帧的内存类型。 此成员与 KSALLOCATOR_FRAMING 结构中的 PoolType 成员之间存在部分对应关系。 这两个成员的不同之处在于 PoolType 仅允许分页池或非分页池。 MemoryType 可以包含下表中列出的任何值。
值 | 说明 |
---|---|
KSMEMORY_TYPE_WILDCARD / KSMEMORY_TYPE_DONT_CARE / KSTYPE_DONT_CARE | 指示内存分配可以是任何类型的内存。 |
KSMEMORY_TYPE_SYSTEM | 指示内存分配必须是系统内存。 |
KSMEMORY_TYPE_USER | 指示内存分配必须是用户模式内存。 |
KSMEMORY_TYPE_KERNEL_PAGED | 指示内存分配必须是内核分页内存。 这对应于设置为 PagedPool的 KSALLOCATOR_FRAMING 结构的 PoolType 成员,此结构的 RequirementsFlags 成员设置为 SYSTEM_MEMORY。 |
KSMEMORY_TYPE_KERNEL_NONPAGED | 指示内存分配必须是内核非分页内存。 这对应于设置为 NonPagedPool的 KSALLOCATOR_FRAMING 结构的 PoolType 成员,此结构的 RequirementsFlags 成员设置为 SYSTEM_MEMORY。 |
KSMEMORY_TYPE_DEVICE_UNKNOWN | 指示未指定设备内存分配类型。 |
BusType
指定访问 MemoryType 指定的物理内存的物理总线。 使用此字段可以基于用于连接媒体的总线确定兼容的内存类型。 当引脚根据连接介质公开不同的内存类型时,这种区别至关重要。 BusType 可以具有下表中列出的任何值。
类型 | 说明 |
---|---|
GUID_BUS_TYPE_PCI | 外围组件互连总线。 |
GUID_BUS_TYPE_USB | 通用串行总线。 |
GUID_BUS_TYPE_1394 | IEEE 1394 串行总线。 |
GUID_BUS_TYPE_AVC | 音频/视频控制总线。 |
GUID_61883_CLASS | 61883 协议总线。 |
MemoryFlags
指定连接点负责帧分配。 应设置为 KSALLOCATOR_REQUIREMENTF_MUST_ALLOCATE。
BusFlags
未使用。
Flags
类似于 KSALLOCATOR_FRAMING 结构中的 OptionsFlags 和 RequirementsFlags 联合,添加了可添加对管道的支持的标志。
Frames
指定允许的未完成帧总数。 对应于 KSALLOCATOR_FRAMING 结构的 Frames 成员。
FileAlignment
帧对齐的要求。 对应于 KSALLOCATOR_FRAMING 结构的 FileAlignment 成员。
FramePitch
定义 LONG 成员 FramePitch。
MemoryTypeWeight
ULONG 类型的值,指定此内存类型的引脚宽度权重。
PhysicalRange
KS_FRAMING_RANGE 类型的结构,用于指定帧大小的物理限制。
FramingRange
KS_FRAMING_RANGE_WEIGHTED 类型的结构,用于指定帧大小的最佳范围。
注解
不要将KSALLOCATOR_FLAG_CAN_ALLOCATE设置为指示内存寻址功能。 筛选器可能能够通过引用此总线上的内存地址来访问特定于设备的内存,但不支持分配此特定于设备的内存的协议。
每个 KSALLOCATOR_FRAMING_EX 实例都包含一个或多个帧项。
要求
要求 | 值 |
---|---|
Header | ks.h (包括 Ks.h) |