Compartilhar via


Função KsAllocateExtraData (ks.h)

A função KsAllocateExtraData é usada com IRPs de streaming para alocar um buffer para conter dados de cabeçalho adicionais. Um ponteiro para o buffer alocado é retornado e, eventualmente, o buffer deve ser liberado pelo chamador.

Sintaxe

KSDDKAPI NTSTATUS KsAllocateExtraData(
  [in, out] PIRP  Irp,
  [in]      ULONG ExtraSize,
  [out]     PVOID *ExtraBuffer
);

Parâmetros

[in, out] Irp

Especifica o IRP que contém os cabeçalhos de fluxo. O IRP deve ter sido passado anteriormente para KsProbeStreamIrp para armazenar os cabeçalhos em buffer.

[in] ExtraSize

Especifica o tamanho, em bytes, de memória adicional a ser alocada entre cada cabeçalho de fluxo. Esse valor deve ser alinhável em um limite de oito bytes. Uma cópia dos cabeçalhos é colocada no buffer retornado, com o tamanho de dados extra inserido entre cada cabeçalho. Isso deve ser liberado pelo chamador.

[out] ExtraBuffer

Aponta para um ponteiro alocado pelo chamador que, após a conclusão bem-sucedida, aponta para um buffer alocado pelo sistema que contém os cabeçalhos de fluxo e o preenchimento solicitado entre eles. Isso deve ser liberado pelo chamador.

Retornar valor

A função KsAllocateExtraData retorna STATUS_SUCCESS se tiver êxito ou retorna um recurso ou erro de acesso.

Comentários

Quando KsAllocateExtraData é concluído com êxito, um ponteiro para um bloco de memória é retornado que contém os cabeçalhos de dados de fluxo do IRP, especificados em Irp, e o preenchimento entre cada cabeçalho de tamanho especificado em ExtraSize. Um exemplo desse buffer resultante é mostrado abaixo:

Diagrama ilustrando um buffer resultante.

Quando o buffer extra não for mais necessário, a memória deverá ser liberada usando ExFreePool.

Requisitos

Requisito Valor
Plataforma de Destino Universal
Cabeçalho ks.h (inclua Ks.h)
Biblioteca Ks.lib
IRQL < DISPATCH_LEVEL