Função KsMethodHandlerWithAllocator (ks.h)

As funções KsMethodHandlerWithAllocator executam o mesmo tratamento que KsMethodHandler, com as mesmas restrições, mas permitem que um retorno de chamada do alocador opcional seja usado para fornecer um buffer para os parâmetros. Se usado, talvez o filtro precise liberar o buffer de alguma maneira não inconveniente. Observe que os sinalizadores IRP_BUFFERED_IO e IRP_DEALLOCATE_BUFFER não são definidos ao usar um alocador personalizado.

Sintaxe

KSDDKAPI NTSTATUS KsMethodHandlerWithAllocator(
  [in]           PIRP               Irp,
  [in]           ULONG              MethodSetsCount,
  [in]           const KSMETHOD_SET *MethodSet,
  [in, optional] PFNKSALLOCATOR     Allocator,
  [in, optional] ULONG              MethodItemSize
);

Parâmetros

[in] Irp

Especifica o IRP com a solicitação de método sendo tratada.

[in] MethodSetsCount

Indica o número de estruturas do conjunto de métodos que estão sendo passadas.

[in] MethodSet

Especifica o ponteiro para a lista de informações do conjunto de métodos.

[in, optional] Allocator

Opcionalmente, aponta para uma função de alocação que será usada para alocar memória para armazenar os parâmetros do método.

[in, optional] MethodItemSize

Opcionalmente, contém o tamanho de cada estrutura KSMETHOD_ITEM em cada lista de métodos. O item de método 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 método, a macro KSMETHOD_ITEM_IRP_STORAGE poderá ser usada para retornar um ponteiro para o item de método para que os dados personalizados possam ser recuperados. Em plataformas de 64 bits, esse parâmetro deve ser um múltiplo de 8.

Valor retornado

A função KsMethodHandler retorna STATUS_SUCCESS se tiver êxito ou um erro específico do método que está sendo tratado se não tiver êxito. A função sempre define o IO_STATUS_BLOCK. Campo de informações do PIRP. Elemento IoStatus dentro do IRP a zero devido a um erro interno ou o elemento é definido por um manipulador de método. A função não define o IO_STATUS_BLOCK. Campo status nem concluir 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á.

Requisitos

   
Plataforma de Destino Universal
Cabeçalho ks.h (inclua Ks.h)
Biblioteca Ks.lib