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)

Vedere anche

KsFastPropertyHandler

KsPropertyHandler