KsPropertyHandlerWithAllocator-Funktion (ks.h)
Die KsPropertyHandlerWithAllocator führt dieselbe Behandlung wie KsPropertyHandlermit den gleichen Einschränkungen aus, ermöglicht jedoch, dass ein optionaler Allocatorrückruf verwendet werden kann, um einen Puffer für die Parameter bereitzustellen. Wenn der Filter verwendet wird, muss der Filter den Puffer möglicherweise in nichtkonventionaler Weise freigeben. IRP_BUFFERED_IO und IRP_DEALLOCATE_BUFFER Flags werden bei Verwendung eines benutzerdefinierten Zuweisungszeichens nicht festgelegt.
Syntax
KSDDKAPI NTSTATUS KsPropertyHandlerWithAllocator(
[in] PIRP Irp,
[in] ULONG PropertySetsCount,
[in] const KSPROPERTY_SET *PropertySet,
[in, optional] PFNKSALLOCATOR Allocator,
[in, optional] ULONG PropertyItemSize
);
Parameter
[in] Irp
Gibt das IRP an, wobei die Eigenschaftsanforderung verarbeitet wird.
[in] PropertySetsCount
Gibt die Anzahl der übergebenen Eigenschaftensätze an.
[in] PropertySet
Gibt den Zeiger auf ein Array von Eigenschaftensatzinformationen an.
[in, optional] Allocator
Verweist optional auf eine Zuordnungsfunktion, die verwendet wird, um Arbeitsspeicher zum Speichern der Eigenschaftsparameter zuzuweisen.
[in, optional] PropertyItemSize
Enthält optional die Größe jeder KSPROPERTY_ITEM Struktur in den Eigenschaften. Das Eigenschaftselement kann erweitert werden, um private Informationen zu speichern. Wenn dieser Parameter null ist, wird die Strukturgröße als normal angenommen. Wenn es größer oder gleich einer Eigenschaftselementstruktur ist, kann das KSPROPERTY_ITEM_IRP_STORAGE Makro verwendet werden, um einen Zeiger auf das Eigenschaftselement zurückzugeben, damit die benutzerdefinierten Daten abgerufen werden können. Auf 64-Bit-Plattformen muss dieser Parameter ein Vielfaches von 8 sein.
Rückgabewert
Die KsPropertyHandler--Funktion gibt STATUS_SUCCESS bei erfolgreicher Ausführung oder einen Fehler zurück, der für die Eigenschaft, die behandelt wird, wenn dies nicht erfolgreich ist. Die Funktion legt den Irp->IoStatus.Information-Member fest, entweder durch Festlegen auf Null aufgrund eines internen Fehlers oder über eine Eigenschaftshandlereinstellung. Die Funktion legt das Element "lrp->IoStatus.Status" nicht fest und schließt das IRP nicht ab.
Wenn der PropertyItemSize-Parameter auf 64-Bit-Plattformen kein Vielfaches von 8 ist, wird STATUS_INVALID_PARAMETER zurückgegeben, und der Aufruf schlägt fehl.
Bemerkungen
KsPropertyHandlerWithAllocator platziert einen Zeiger auf die relevante KSPROPERTY_ITEM Struktur in der Irp->Tail.Overlay.DriverContext Parameter im IRP. Der Minidriver kann das KSPROPERTY_ITEM_IRP_STORAGE Makro verwenden, das in ks.h-definiert ist, um auf diesen Zeiger zuzugreifen.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform- | Universal |
Header- | ks.h (enthalten Ks.h) |