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 qualche modo non ventionale. Si noti che i flag 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 di informazioni sul 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 di elementi del metodo, è possibile utilizzare la macro KSMETHOD_ITEM_IRP_STORAGE 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
Se ha esito positivo, la funzione KsMethodHandler restituisce STATUS_SUCCESS oppure un errore specifico del metodo gestito in caso di esito negativo. 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 del metodo. 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, viene restituito STATUS_INVALID_PARAMETER e la chiamata ha esito negativo.
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Universale |
Intestazione | ks.h (include Ks.h) |
Libreria | Ks.lib |