Partilhar via


estrutura KSALLOCATOR_FRAMING (ks.h)

A estrutura de KSALLOCATOR_FRAMING é usada para consultar requisitos de enquadramento e enviar solicitações de criação do alocador.

Sintaxe

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;

Membros

OptionsFlags

Especifica os sinalizadores de opção do alocador especificados durante a criação do alocador para o ponto de conexão. O membro OptionsFlags pode conter um dos valores a seguir.

OptionsFlags Descrição
KSALLOCATOR_OPTIONF_COMPATIBLE Indica que as opções de enquadramento do alocador que está sendo criado são compatíveis com o alocador downstream. Essa opção normalmente é especificada quando um modificador in-loco recebe um alocador para buffers de cópia. Se o filtro não for necessário para modificar um determinado quadro, ele poderá enviar o quadro para o filtro downstream sem alocar um quadro adicional do alocador downstream quando essa opção for especificada.
KSALLOCATOR_OPTIONF_SYSTEM_MEMORY Indica que a memória do sistema deve ser usada para alocações. Quando especificado, o alocador deve alocar memória do pool, conforme especificado no membro PoolType. Caso contrário, supõe-se que o coletor forneça um mapeamento de endereço do sistema para RAM a bordo ou outras formas de armazenamento no dispositivo.

RequirementsFlags

Um valor do tipo ULONG que descreve os requisitos do alocador para esse ponto de conexão para operações de consulta. O membro RequirementsFlags pode conter os valores a seguir.

Valor do sinalizador Descrição
KSALLOCATOR_REQUIREMENTF_INPLACE_MODIFIER Indica que o ponto de conexão pode executar uma modificação in-loco.
KSALLOCATOR_REQUIREMENTF_SYSTEM_MEMORY Indica que o ponto de conexão requer memória do sistema para alocações. Se essa opção não estiver definida, supõe-se que o coletor forneça um mapeamento de espaço de endereço do sistema para RAM a bordo ou outras formas de armazenamento no dispositivo.
KSALLOCATOR_REQUIREMENTF_FRAME_INTEGRITY Indica que o ponto de conexão requer que os filtros downstream mantenham a integridade dos dados dos quadros especificados.
KSALLOCATOR_REQUIREMENTF_MUST_ALLOCATE Indica que o ponto de conexão requer que ele aloque todos os quadros enviados.
KSALLOCATOR_REQUIREMENTF_PREFERENCES_ONLY Indica que os sinalizadores de Requisitos são apenas preferências e o ponto de conexão é capaz de alocar quadros que não atendem a essas especificações.

PoolType

Uma estrutura do tipo POOL_TYPE que especifica o tipo de pool de alocação no modo kernel.

Frames

Especifica o número total de quadros pendentes permitidos. Zero indica que o filtro não tem nenhum requisito para esse membro.

FrameSize

Especifica o tamanho total do quadro, incluindo prefixo e postfixo. Zero indica que o filtro não tem nenhum requisito para esse membro.

FileAlignment

Um valor do tipo ULONG que descreve o alinhamento de bytes a ser usado ao alocar quadros. A tabela a seguir descreve vários valores de alinhamento possíveis.

Valor Descrição
FILE_BYTE_ALIGNMENT Alinhamento de 1 byte
FILE_WORD_ALIGNMENT Alinhamento de 2 bytes
FILE_LONG_ALIGNMENT Alinhamento de 4 bytes
FILE_32_BYTE_ALIGNMENT Alinhamento de 32 bytes
FILE_64_BYTE_ALIGNMENT Alinhamento de 64 bytes

FramePitch

Reserved

Reservado para uso do sistema. Definido como zero.

Observações

Use KSALLOCATOR_FRAMING para enviar uma solicitação de criação de alocador para um identificador de um coletor usando IRP_MJ_CREATE.

Quando você especifica um valor para o membro FileAlignment, o menor alinhamento de alocação é 1 byte (FILE_BYTE_ALIGNMENT). O software que funciona como uma alocação deve dar suporte ao alinhamento de 4 bytes (FILE_LONG_ALIGNMENT), se possível.

Requisitos

Requisito Valor
cabeçalho ks.h (incluir Ks.h)

Consulte também

KsCreateAllocator