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 |