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