структура 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. В противном случае предполагается, что приемник предоставляет системное сопоставление адресов с ОЗУ на борту или другими формами хранения на устройстве. |
RequirementsFlags
Значение типа ULONG, описывающее требования распределителя для этой точки подключения для операций запроса. Элемент RequirementsFlags может содержать следующие значения.
Значение флага | Описание |
---|---|
KSALLOCATOR_REQUIREMENTF_INPLACE_MODIFIER | Указывает, что точка подключения может выполнять изменение на месте. |
KSALLOCATOR_REQUIREMENTF_SYSTEM_MEMORY | Указывает, что точка подключения требует системной памяти для выделения. Если этот параметр не задан, предполагается, что приемник предоставляет сопоставление адресного пространства системы с ОЗУ на борту или другими формами хранения на устройстве. |
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), если это возможно.
Требования
Требование | Ценность |
---|---|
заголовка | ks.h (include Ks.h) |