структура 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 (включая Ks.h)

См. также раздел

KsCreateAllocator