Condividi tramite


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