// ks.h
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;
View the official Windows Driver Kit DDI referenceNo description available.
The KS_FRAMING_ITEM structure is used to declare allocator requirements on a kernel-mode pin.
MemoryTypeSpecifies the type of memory used for buffers and data frames. There is a partial correspondence between this member and the PoolType member in the KSALLOCATOR_FRAMING structure. The two members differ in that PoolType allows only paged or nonpaged pool. MemoryType can have any of the values listed in the following table.
| Value | Description |
|---|---|
| KSMEMORY_TYPE_WILDCARD / KSMEMORY_TYPE_DONT_CARE / KSTYPE_DONT_CARE | Indicates memory allocation can be any type of memory. |
| KSMEMORY_TYPE_SYSTEM | Indicates memory allocation must be system memory. |
| KSMEMORY_TYPE_USER | Indicates memory allocation must be user-mode memory. |
| KSMEMORY_TYPE_KERNEL_PAGED | Indicates memory allocation must be kernel paged memory. This corresponds to the PoolType member of the KSALLOCATOR_FRAMING structure set to PagedPool and the RequirementsFlags member of this structure set to SYSTEM_MEMORY. |
| KSMEMORY_TYPE_KERNEL_NONPAGED | Indicates memory allocation must be kernel nonpaged memory. This corresponds to the PoolType member of the KSALLOCATOR_FRAMING structure set to NonPagedPool and the RequirementsFlags member of this structure set to SYSTEM_MEMORY. |
| KSMEMORY_TYPE_DEVICE_UNKNOWN | Indicates device memory allocation type is not specified. |
BusTypeSpecifies the physical bus accessing the physical memory specified by MemoryType. Use this field to determine a compatible memory type based on the bus that is used for the connection medium. This distinction is crucial when a pin exposes different memory types based on the connection medium. BusType can have any of the values listed in the following table.
| Type | Description |
|---|---|
| GUID_BUS_TYPE_PCI | Peripheral component interconnect bus. |
| GUID_BUS_TYPE_USB | Universal serial bus. |
| GUID_BUS_TYPE_1394 | IEEE 1394 serial bus. |
| GUID_BUS_TYPE_AVC | Audio/video control bus. |
| GUID_61883_CLASS | 61883 protocol bus. |
MemoryFlagsSpecifies that the connection point is responsible for frame allocation. Should be set to KSALLOCATOR_REQUIREMENTF_MUST_ALLOCATE.
BusFlagsNot used.
FlagsSimilar to the OptionsFlags and RequirementsFlags union in the KSALLOCATOR_FRAMING structure, with the addition of the flags that add support for pipes.
FramesSpecifies the total number of allowable outstanding frames. Corresponds to the Frames member of the KSALLOCATOR_FRAMING structure.
FileAlignmentRequirement for frame alignment. Corresponds to the FileAlignment member of the KSALLOCATOR_FRAMING structure.
FramePitchDefines the LONG member FramePitch.
MemoryTypeWeightA value of type ULONG that specifies the pin-wide weight of this memory type.
PhysicalRangeA structure of type KS_FRAMING_RANGE that specifies the physical limit of frame sizes.
FramingRangeA structure of type KS_FRAMING_RANGE_WEIGHTED that specifies the optimal range of frame sizes.
Do not set KSALLOCATOR_FLAG_CAN_ALLOCATE to indicate memory addressing capability. A filter might be able to access the device-specific memory over a device-specific bus by referencing the memory address on this bus, and yet not support the protocol to allocate this device-specific memory.
Each KSALLOCATOR_FRAMING_EX instance contains one or more framing items.