Funzione KsPropertyHandlerWithAllocator (ks.h)
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 modo nonventionale. IRP_BUFFERED_IO e 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 dell'elemento 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 se non riesce. La funzione imposta il membro Irp-IoStatus.Information>, impostandolo su zero a causa di un errore interno o tramite un gestore delle proprietà che lo imposta. 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, STATUS_INVALID_PARAMETER viene restituito e la chiamata ha esito negativo.
Commenti
KsPropertyHandlerWithAllocator inserisce un puntatore alla struttura di 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.
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Universale |
Intestazione | ks.h (include Ks.h) |