KS_FRAMING_ITEM structure (ks.h)

The KS_FRAMING_ITEM structure is used to declare allocator requirements on a kernel-mode pin.

Syntax

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;

Members

MemoryType

Specifies 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.

BusType

Specifies 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.

MemoryFlags

Specifies that the connection point is responsible for frame allocation. Should be set to KSALLOCATOR_REQUIREMENTF_MUST_ALLOCATE.

BusFlags

Not used.

Flags

Similar to the OptionsFlags and RequirementsFlags union in the KSALLOCATOR_FRAMING structure, with the addition of the flags that add support for pipes.

Frames

Specifies the total number of allowable outstanding frames. Corresponds to the Frames member of the KSALLOCATOR_FRAMING structure.

FileAlignment

Requirement for frame alignment. Corresponds to the FileAlignment member of the KSALLOCATOR_FRAMING structure.

FramePitch

Defines the LONG member FramePitch.

MemoryTypeWeight

A value of type ULONG that specifies the pin-wide weight of this memory type.

PhysicalRange

A structure of type KS_FRAMING_RANGE that specifies the physical limit of frame sizes.

FramingRange

A structure of type KS_FRAMING_RANGE_WEIGHTED that specifies the optimal range of frame sizes.

Remarks

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.

Requirements

Requirement Value
Header ks.h (include Ks.h)

See also

KSALLOCATOR_FRAMING

KSALLOCATOR_FRAMING_EX

KS_COMPRESSION

KS_FRAMING_RANGE

KS_FRAMING_RANGE_WEIGHTED