Freigeben über


KsMethodHandlerWithAllocator-Funktion (ks.h)

Die KsMethodHandlerWithAllocator-Funktionen führen dieselbe Behandlung wie KsMethodHandler mit den gleichen Einschränkungen aus, ermöglichen jedoch die Verwendung eines optionalen Zuweisungsrückrufs, um einen Puffer für die Parameter bereitzustellen. Bei Verwendung muss der Filter den Puffer möglicherweise auf nichtkonventionale Weise freigeben. Beachten Sie, dass die flags IRP_BUFFERED_IO und IRP_DEALLOCATE_BUFFER bei Verwendung einer benutzerdefinierten Zuweisung nicht festgelegt sind.

Syntax

KSDDKAPI NTSTATUS KsMethodHandlerWithAllocator(
  [in]           PIRP               Irp,
  [in]           ULONG              MethodSetsCount,
  [in]           const KSMETHOD_SET *MethodSet,
  [in, optional] PFNKSALLOCATOR     Allocator,
  [in, optional] ULONG              MethodItemSize
);

Parameter

[in] Irp

Gibt das IRP mit der zu verarbeitenden Methodenanforderung an.

[in] MethodSetsCount

Gibt die Anzahl der übergebenen Methodensatzstrukturen an.

[in] MethodSet

Gibt den Zeiger auf die Liste der Methodensatzinformationen an.

[in, optional] Allocator

Verweist optional auf eine Zuordnungsfunktion, die zum Zuweisen von Arbeitsspeicher zum Speichern der Methodenparameter verwendet wird.

[in, optional] MethodItemSize

Enthält optional die Größe jeder KSMETHOD_ITEM-Struktur in jeder Liste von Methoden. Das Methodenelement kann erweitert werden, um private Informationen zu speichern. Wenn dieser Parameter null ist, wird angenommen, dass die Strukturgröße normal ist. Wenn es größer oder gleich einer Methodenelementstruktur ist, kann das KSMETHOD_ITEM_IRP_STORAGE Makro verwendet werden, um einen Zeiger auf das Methodenelement 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 KsMethodHandler-Funktion gibt bei erfolgreicher Ausführung STATUS_SUCCESS oder einen fehlerspezifischen Fehler für die zu behandelnde Methode zurück, wenn sie nicht erfolgreich ist. Die Funktion legt immer die IO_STATUS_BLOCK fest. Informationsfeld des PIRP. IoStatus-Element innerhalb des IRP aufgrund eines internen Fehlers auf 0 (null) oder das Element wird von einem Methodenhandler festgelegt. Die Funktion legt die IO_STATUS_BLOCK nicht fest. Statusfeld, oder vervollständigen Sie die IRP.

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.

Anforderungen

Anforderung Wert
Zielplattform Universell
Header ks.h (ks.h einschließen)
Bibliothek Ks.lib