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)

Confira também

KsFastPropertyHandler

KsPropertyHandler