Funzione KsPropertyHandlerWithAllocator (ks.h)
Il KsPropertyHandlerWithAllocator esegue la stessa gestione di KsPropertyHandler, 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 nonventionale. IRP_BUFFERED_IO e i flag di IRP_DEALLOCATE_BUFFER non vengono impostati quando si usa un allocatore personalizzato.
Sintassi
KSDDKAPI NTSTATUS KsPropertyHandlerWithAllocator(
[in] PIRP Irp,
[in] ULONG PropertySetsCount,
[in] const KSPROPERTY_SET *PropertySet,
[in, optional] PFNKSALLOCATOR Allocator,
[in, optional] ULONG PropertyItemSize
);
Parametri
[in] Irp
Specifica l'IRP con la richiesta di proprietà gestita.
[in] PropertySetsCount
Specifica il numero di set di proprietà passati.
[in] PropertySet
Specifica il puntatore a una matrice di informazioni sul set di proprietà.
[in, optional] Allocator
Facoltativamente, punta a una funzione di allocazione usata per allocare memoria per archiviare i parametri della proprietà.
[in, optional] PropertyItemSize
Facoltativamente, contiene le dimensioni di ogni struttura KSPROPERTY_ITEM nelle proprietà. L'elemento della proprietà 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 di proprietà, è possibile utilizzare la macro KSPROPERTY_ITEM_IRP_STORAGE per restituire un puntatore all'elemento della proprietà 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 KsPropertyHandler restituisce STATUS_SUCCESS se ha esito positivo o un errore specifico della proprietà gestita in caso di esito negativo. La funzione imposta il membro Irp->IoStatus.Information, impostandolo su zero a causa di un errore interno o impostandolo tramite un gestore di proprietà. La funzione non imposta il membro lrp->IoStatus.Status né completa l'IRP.
Nelle piattaforme a 64 bit, se il parametro PropertyItemSize non è un multiplo di 8, viene restituito STATUS_INVALID_PARAMETER e la chiamata non riesce.
Osservazioni
KsPropertyHandlerWithAllocator posiziona un puntatore alla struttura KSPROPERTY_ITEM pertinente nel parametro Irp->Tail.Overlay.DriverContext in IRP. Il minidriver può usare la macro KSPROPERTY_ITEM_IRP_STORAGE, definita in ks.h, per accedere a questo puntatore.
Fabbisogno
Requisito | Valore |
---|---|
piattaforma di destinazione | Universale |
intestazione | ks.h (include Ks.h) |