Freigeben über


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:

Diagramm zur Veranschaulichung eines resultierenden Puffers.

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