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 zugewiesenen Puffer wird zurückgegeben, und der Puffer muss vom Aufrufer schließlich 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 Datenstromheader enthält. Das IRP muss zuvor an KsProbeStreamIrp übergeben worden sein, um die Header zu puffern.

[in] ExtraSize

Gibt die Größe des zusätzlichen Speichers in Bytes an, der zwischen den einzelnen Datenstromheader zugeordnet werden soll. Dieser Wert muss an einer Acht-Byte-Grenze ausgerichtet sein. Eine Kopie der Kopfzeilen wird im zurückgegebenen Puffer platziert, wobei die zusätzliche Datengröße zwischen den einzelnen Kopfzeilen eingefügt wird. Dies muss vom Anrufer freigegeben werden.

[out] ExtraBuffer

Verweist auf einen vom Aufrufer zugewiesenen Zeiger, der beim erfolgreichen Abschluss auf einen vom System zugewiesenen Puffer verweist, der die Datenstromheader und den angeforderten Abstand dazwischen enthält. Dies muss vom Anrufer freigegeben werden.

Rückgabewert

Die KsAllocateExtraData--Funktion gibt bei erfolgreicher Ausführung STATUS_SUCCESS zurück oder gibt einen Ressourcen- oder Zugriffsfehler zurück.

Bemerkungen

Wenn KsAllocateExtraData erfolgreich abgeschlossen wird, wird ein Zeiger auf einen Speicherblock zurückgegeben, der die Datenkopfzeilen des Datenstroms aus dem IRP enthält, die bei Irp-angegeben sind, und zwischen den einzelnen Headern der Größe, die in ExtraSizeangegeben sind. Nachfolgend sehen Sie ein Beispiel für einen solchen resultierenden Puffer:

Diagramm, das einen resultierenden Puffer veranschaulicht.

Wenn der zusätzliche Puffer nicht mehr benötigt wird, sollte der Speicher mit ExFreePool-freigegeben werden.

Anforderungen

Anforderung Wert
Zielplattform- Universal
Header- ks.h (enthalten Ks.h)
Library Ks.lib
IRQL- < DISPATCH_LEVEL