KsAllocateExtraData-Funktion (ks.h)
Die KsAllocateExtraData-Funktion wird mit Streaming-IRPs verwendet, um einen Puffer zuzuweisen, der zusätzliche Headerdaten enthält. Ein Zeiger auf den zugeordneten Puffer wird zurückgegeben, und der Puffer muss schließlich vom Aufrufer freigegeben werden.
Syntax
KSDDKAPI NTSTATUS KsAllocateExtraData(
[in, out] PIRP Irp,
[in] ULONG ExtraSize,
[out] PVOID *ExtraBuffer
);
Parameter
[in, out] Irp
Gibt das IRP an, das die Streamheader enthält. Der IRP muss zuvor an KsProbeStreamIrp übergeben worden sein, um die Header zu puffern.
[in] ExtraSize
Gibt die Größe des zusätzlichen Arbeitsspeichers in Bytes an, der zwischen jedem Streamheader zugeordnet werden soll. Dieser Wert muss an einer Acht-Byte-Grenze ausgerichtet werden können. Eine Kopie der Header wird im zurückgegebenen Puffer platziert, wobei die zusätzliche Datengröße zwischen jedem Header eingefügt wird. Dies muss vom Aufrufer freigegeben werden.
[out] ExtraBuffer
Verweist auf einen vom Aufrufer zugeordneten Zeiger, der bei erfolgreicher Fertigstellung auf einen vom System zugeordneten Puffer verweist, der die Streamheader und den angeforderten Abstand zwischen diesen enthält. Dies muss vom Aufrufer freigegeben werden.
Rückgabewert
Die KsAllocateExtraData-Funktion gibt bei erfolgreicher Ausführung STATUS_SUCCESS zurück, oder sie gibt eine Ressource oder einen Zugriffsfehler zurück.
Hinweise
Wenn KsAllocateExtraData erfolgreich abgeschlossen wurde, wird ein Zeiger auf einen Speicherblock zurückgegeben, der sowohl die unter Irp angegebenen Datendatenheader des Datenstroms aus dem IRP als auch den Abstand zwischen jedem in ExtraSize angegebenen Header der Größe enthält. Ein Beispiel für einen solchen resultierenden Puffer ist unten dargestellt:
Wenn der zusätzliche Puffer nicht mehr benötigt wird, sollte der Arbeitsspeicher mithilfe von ExFreePool freigegeben werden.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Universell |
Header | ks.h (ks.h einschließen) |
Bibliothek | Ks.lib |
IRQL | < DISPATCH_LEVEL |