KsPropertyHandlerWithAllocator-Funktion (ks.h)
Der KsPropertyHandlerWithAllocator führt die gleiche Behandlung wie KsPropertyHandler mit den gleichen Einschränkungen aus, ermöglicht jedoch die Verwendung eines optionalen Zuteilungsrückrufs, um einen Puffer für die Parameter bereitzustellen. Bei Verwendung muss der Filter den Puffer möglicherweise auf nichtkonventionale Weise freigeben. IRP_BUFFERED_IO- und IRP_DEALLOCATE_BUFFER-Flags werden bei Verwendung einer benutzerdefinierten Zuordnung 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 die IRP an, bei der 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
Zeigt optional auf eine Zuordnungsfunktion, die zum Zuweisen von Arbeitsspeicher zum Speichern der Eigenschaftenparameter verwendet wird.
[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 0 ist, wird davon ausgegangen, dass die Strukturgröße normal ist. Wenn es größer oder gleich einer Eigenschaftenelementstruktur ist, kann das KSPROPERTY_ITEM_IRP_STORAGE Makros 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 bei erfolgreicher Ausführung STATUS_SUCCESS oder einen fehlerspezifischen Fehler für die zu behandelnde Eigenschaft zurück, wenn der Fehler nicht erfolgreich ist. Die Funktion legt den Irp-IoStatus.Information-Member> fest, entweder durch Festlegen auf null aufgrund eines internen Fehlers oder durch einen Eigenschaftenhandler, der ihn festlegt. Die Funktion legt weder den lrp-IoStatus.Status-Member> fest, noch schließt sie die IRP 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.
Hinweise
KsPropertyHandlerWithAllocator platziert einen Zeiger auf die relevante KSPROPERTY_ITEM-Struktur im Parameter Irp-Tail.Overlay.DriverContext> im IRP. Der Minidriver kann das in ks.h definierte makro KSPROPERTY_ITEM_IRP_STORAGE verwenden, um auf diesen Zeiger zuzugreifen.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Universell |
Header | ks.h (einschließlich Ks.h) |