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:
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 |