PFNKSALLOCATOR-Rückruffunktion (ks.h)
Minidriver können optional eine Rückruffunktion vom Typ PFNKSALLOCATOR als Parameter in Aufrufen von KsEnableEventWithAllocator, KsPropertyHandlerWithAllocatorund KsMethodHandlerWithAllocator.
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 Pufferzuweisungsanforderung vorgenommen wird.
[in] BufferSize
Gibt die Größe des erforderlichen Puffers an. Diese Größe deckt alle Parameter in der Anforderung ab.
[in] InputOperation
Wird auf TRUE- festgelegt, wenn dies ein Eingabevorgang ist, was bedeutet, dass bei erfolgreicher Rückgabe das Feld "Irp->IoStatus.Information" die Anzahl der Bytes enthält, die wieder in den ursprünglichen Eingabepuffer kopiert werden sollen.
Rückgabewert
Gibt STATUS_SUCCESS zurück, wenn die Anforderung verarbeitet wird. Andernfalls wird ein entsprechender Fehlercode zurückgegeben.
Bemerkungen
In der Regel wird Poolspeicher für Pufferzuweisungen verwendet. Dadurch können 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 den diese Daten von den Standardbehandlungsfunktionen platziert werden. Daher kann ein Filter Speicherblöcke aufweisen, die bereits einem Adapter zugeordnet wurden, aus dem Pufferzuweisungen auftreten können.
Da dieser Speicher vermutlich kein typischer poolgeteilter Speicher ist, muss der Filter die Pufferbereinigung nach Abschluss des Irp durchführen. Dies bedeutet, dass der Allocator für Eingabevorgänge aus dem Benutzermodus, die nicht synchron sind, eine MDL für den Zielpuffer zuweisen, probe 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 |
Header- | ks.h (enthalten Ks.h) |