Freigeben über


KsMethodHandlerWithAllocator-Funktion (ks.h)

Die KsMethodHandlerWithAllocator--Funktionen führen dieselbe Behandlung wie KsMethodHandlermit den gleichen Einschränkungen aus, ermöglicht jedoch das Bereitstellen eines optionalen Allocatorrückrufs, um einen Puffer für die Parameter bereitzustellen. Wenn der Filter verwendet wird, muss der Filter den Puffer möglicherweise in nichtkonventionaler Weise freigeben. Beachten Sie, dass die Kennzeichnungen IRP_BUFFERED_IO und IRP_DEALLOCATE_BUFFER bei Verwendung eines benutzerdefinierten Zuweisungszeichens nicht festgelegt werden.

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 an, wobei die Methodenanforderung verarbeitet wird.

[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 verwendet wird, um Speicher zum Speichern der Methodenparameter zuzuweisen.

[in, optional] MethodItemSize

Enthält optional die Größe jeder KSMETHOD_ITEM Struktur in jeder Liste der Methoden. Das Methodenelement 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 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 STATUS_SUCCESS zurück, wenn dies erfolgreich ist, oder einen Fehler, der für die Methode, die behandelt wird, wenn dies nicht erfolgreich ist. Die Funktion legt immer den IO_STATUS_BLOCK fest. Informationsfeld des PIRP. IoStatus-Element innerhalb des IRP auf Null aufgrund eines internen Fehlers, oder das Element wird von einem Methodenhandler festgelegt. Die Funktion legt die IO_STATUS_BLOCK nicht fest. Statusfeld oder Abschließen des 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- Universal
Header- ks.h (enthalten Ks.h)
Library Ks.lib