Поделиться через


структура 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)

См. также

KsCreateAllocator