KSALLOCATOR_FRAMING structure (ks.h)
The KSALLOCATOR_FRAMING structure is used to query framing requirements and submit allocator creation requests.
Syntax
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;
Members
OptionsFlags
Specifies the allocator option flags specified during allocator creation for the connection point. The OptionsFlags member can contain one of the following values.
OptionsFlags | Description |
---|---|
KSALLOCATOR_OPTIONF_COMPATIBLE | Indicates that the framing options of the allocator being created are compatible with the downstream allocator. This option is typically specified when an in-place modifier is assigned an allocator for copy buffers. If the filter is not required to modify a given frame, it may submit the frame to the downstream filter without allocating an additional frame from the downstream allocator when this option is specified. |
KSALLOCATOR_OPTIONF_SYSTEM_MEMORY | Indicates that system memory should be used for allocations. When specified, the allocator must allocate memory from the pool as specified in the PoolType member. Otherwise, it is assumed that the sink provides a system address mapping to on-board RAM or other forms of storage on the device. |
RequirementsFlags
A value of type ULONG that describes the allocator requirements for this connection point for query operations. The RequirementsFlags member can contain the following values.
Flag Value | Description |
---|---|
KSALLOCATOR_REQUIREMENTF_INPLACE_MODIFIER | Indicates that the connection point can perform an in-place modification. |
KSALLOCATOR_REQUIREMENTF_SYSTEM_MEMORY | Indicates that the connection point requires system memory for allocations. If this option is not set, it is assumed that the sink provides a system address space mapping to on-board RAM or other forms of storage on the device. |
KSALLOCATOR_REQUIREMENTF_FRAME_INTEGRITY | Indicates that the connection point requires that downstream filters maintain the data integrity of specified frames. |
KSALLOCATOR_REQUIREMENTF_MUST_ALLOCATE | Indicates that the connection point requires that it allocate any frames sent. |
KSALLOCATOR_REQUIREMENTF_PREFERENCES_ONLY | Indicates that the Requirements flags are preferences only and the connection point is able to allocate frames that do not meet those specifications. |
PoolType
A structure of type POOL_TYPE that specifies kernel-mode allocation pool type.
Frames
Specifies the total number of allowable outstanding frames. Zero indicates that the filter has no requirement for this member.
FrameSize
Specifies the total size of the frame, including prefix and postfix. Zero indicates that the filter has no requirement for this member.
FileAlignment
A value of type ULONG that describes the byte alignment to use when allocating frames. The following table describes several possible alignment values.
Value | Description |
---|---|
FILE_BYTE_ALIGNMENT | 1-byte alignment |
FILE_WORD_ALIGNMENT | 2-byte alignment |
FILE_LONG_ALIGNMENT | 4-byte alignment |
FILE_32_BYTE_ALIGNMENT | 32-byte alignment |
FILE_64_BYTE_ALIGNMENT | 64-byte alignment |
FramePitch
Reserved
Reserved for system use. Set to zero.
Remarks
Use KSALLOCATOR_FRAMING to submit an allocator creation request to a handle of a sink by using IRP_MJ_CREATE.
When you specify a value for the FileAlignment member, the smallest allocation alignment is 1 byte (FILE_BYTE_ALIGNMENT). Software that functions as an allocation should support 4-byte alignment (FILE_LONG_ALIGNMENT), if possible.
Requirements
Requirement | Value |
---|---|
Header | ks.h (include Ks.h) |