PFNKSALLOCATOR-Rückruffunktion (ks.h)
Minidriver können optional eine Rückruffunktion vom Typ PFNKSALLOCATOR als Parameter in Aufrufen von KsEnableEventWithAllocator, KsPropertyHandlerWithAllocator und KsMethodHandlerWithAllocator bereitstellen.
Syntax
PFNKSALLOCATOR Pfnksallocator;
NTSTATUS Pfnksallocator(
[in] PIRP Irp,
[in] ULONG BufferSize,
[in] BOOLEAN InputOperation
)
{...}
Parameter
[in] Irp
Gibt den IRP an, für den die Pufferzuordnungsanforderung gestellt wird.
[in] BufferSize
Gibt die erforderliche Puffergröße an. Diese Größe deckt alle Parameter in der Anforderung ab.
[in] InputOperation
Auf TRUE festgelegt, wenn es sich um einen Eingabevorgang handelt, was bedeutet, dass das Feld Irp-IoStatus.Information> bei erfolgreicher Rückgabe die Anzahl der Bytes enthält, die zurück in den ursprünglichen Eingabepuffer kopiert werden sollen.
Rückgabewert
Gibt STATUS_SUCCESS zurück, wenn die Anforderung verarbeitet wird. Andernfalls wird ein geeigneter Fehlercode zurückgegeben.
Hinweise
In der Regel wird Poolarbeitsspeicher für Pufferzuordnungen verwendet. Dies ermöglicht Filter, die Ereignis-, Eigenschafts- und Methodenabfragen direkt an die Hardware übergeben, um zusätzliche Datenkopien zu vermeiden, indem sie den Puffer bereitstellen können, in dem diese Daten von den Standardbehandlungsfunktionen platziert werden. Daher kann ein Filter über Speicherblöcke verfügen, die bereits einem Adapter zugeordnet wurden, von dem aus Pufferzuordnungen erfolgen können.
Da es sich bei diesem Arbeitsspeicher vermutlich nicht um einen typischen poolseitig zugewiesenen Speicher handelt, muss der Filter nach Abschluss des Irp eine Pufferbereinigung durchführen. Dies bedeutet, dass der Allocator für Eingabevorgänge aus dem Benutzermodus, die nicht synchron sind, eine MDL für den Zielpuffer zuordnen, testen und sperren und eine Systemadresse abrufen muss. Dies muss erfolgen, um das Kopieren der Rückgabedaten in den ursprünglichen Puffer zu ermöglichen.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Desktop |
Kopfzeile | ks.h (ks.h einschließen) |