Funzione KsMethodHandlerWithAllocator (ks.h)

Le funzioni KsMethodHandlerWithAllocator eseguono la stessa gestione di KsMethodHandler, con le stesse restrizioni, ma consente l'uso di un callback di allocatore facoltativo per fornire un buffer per i parametri. Se usato, il filtro potrebbe dover liberare il buffer in modo nonventionale. Si noti che i flag di IRP_BUFFERED_IO e IRP_DEALLOCATE_BUFFER non vengono impostati quando si usa un allocatore personalizzato.

Sintassi

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

Parametri

[in] Irp

Specifica l'IRP con la richiesta di metodo gestita.

[in] MethodSetsCount

Indica il numero di strutture del set di metodi passate.

[in] MethodSet

Specifica il puntatore all'elenco delle informazioni del set di metodi.

[in, optional] Allocator

Facoltativamente, punta a una funzione di allocazione che verrà usata per allocare memoria per archiviare i parametri del metodo.

[in, optional] MethodItemSize

Facoltativamente, contiene le dimensioni di ogni struttura KSMETHOD_ITEM in ogni elenco di metodi. L'elemento del metodo può essere esteso per archiviare informazioni private. Se questo parametro è zero, si presuppone che la dimensione della struttura sia normale. Se è maggiore o uguale a una struttura dell'elemento del metodo, la macro KSMETHOD_ITEM_IRP_STORAGE può essere usata per restituire un puntatore all'elemento del metodo in modo che i dati personalizzati possano essere recuperati. Nelle piattaforme a 64 bit, questo parametro deve essere un multiplo di 8.

Valore restituito

La funzione KsMethodHandler restituisce STATUS_SUCCESS se ha esito positivo o un errore specifico del metodo gestito se non è riuscito. La funzione imposta sempre il IO_STATUS_BLOCK. Campo informazioni del PIRP. Elemento IoStatus all'interno di IRP su zero a causa di un errore interno o l'elemento viene impostato da un gestore dei metodi. La funzione non imposta il IO_STATUS_BLOCK. Campo stato né completare l'IRP.

Nelle piattaforme a 64 bit, se il parametro PropertyItemSize non è un multiplo di 8, STATUS_INVALID_PARAMETER viene restituito e la chiamata ha esito negativo.

Requisiti

   
Piattaforma di destinazione Universale
Intestazione ks.h (include Ks.h)
Libreria Ks.lib