Freigeben über


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)

Siehe auch

KsFastPropertyHandler

KsPropertyHandler-