Função KsPropertyHandlerWithAllocator (ks.h)
O KsPropertyHandlerWithAllocator executa o mesmo tratamento que KsPropertyHandler, com as mesmas restrições, mas permite que um retorno de chamada do alocador opcional seja usado para fornecer um buffer para os parâmetros. Se usado, o filtro pode precisar liberar o buffer de alguma maneira não condicional. IRP_BUFFERED_IO e sinalizadores de IRP_DEALLOCATE_BUFFER não são definidos ao usar um alocador personalizado.
Sintaxe
KSDDKAPI NTSTATUS KsPropertyHandlerWithAllocator(
[in] PIRP Irp,
[in] ULONG PropertySetsCount,
[in] const KSPROPERTY_SET *PropertySet,
[in, optional] PFNKSALLOCATOR Allocator,
[in, optional] ULONG PropertyItemSize
);
Parâmetros
[in] Irp
Especifica o IRP com a solicitação de propriedade sendo tratada.
[in] PropertySetsCount
Especifica o número de conjuntos de propriedades que estão sendo passados.
[in] PropertySet
Especifica o ponteiro para uma matriz de informações do conjunto de propriedades.
[in, optional] Allocator
Opcionalmente, aponta para uma função de alocação usada para alocar memória para armazenar os parâmetros de propriedade.
[in, optional] PropertyItemSize
Opcionalmente, contém o tamanho de cada estrutura KSPROPERTY_ITEM nas propriedades. O item de propriedade pode ser estendido para armazenar informações privadas. Se esse parâmetro for zero, o tamanho da estrutura será considerado normal. Se for maior ou igual a uma estrutura de item de propriedade, a macro KSPROPERTY_ITEM_IRP_STORAGE poderá ser usada para retornar um ponteiro para o item de propriedade para que os dados personalizados possam ser recuperados. Em plataformas de 64 bits, esse parâmetro deve ser um múltiplo de 8.
Retornar valor
A função KsPropertyHandler retornará STATUS_SUCCESS se tiver êxito ou um erro específico para a propriedade que está sendo tratada se não tiver êxito. A função define o membro Irp-IoStatus.Information, definindo-o> como zero devido a um erro interno ou por meio de um manipulador de propriedades definindo-o. A função não define o membro lrp-IoStatus.Status> nem conclui o IRP.
Em plataformas de 64 bits, se o parâmetro PropertyItemSize não for um múltiplo de 8, STATUS_INVALID_PARAMETER será retornado e a chamada falhará.
Comentários
KsPropertyHandlerWithAllocator coloca um ponteiro para a estrutura de KSPROPERTY_ITEM relevante no parâmetro Irp-Tail.Overlay.DriverContext> no IRP. O minidriver pode usar a macro KSPROPERTY_ITEM_IRP_STORAGE, definida em ks.h, para acessar esse ponteiro.
Requisitos
Requisito | Valor |
---|---|
Plataforma de Destino | Universal |
Cabeçalho | ks.h (inclua Ks.h) |