Freigeben über


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)

Weitere Informationen

KsFastPropertyHandler

KsPropertyHandler