Condividi tramite


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