Función KsAllocateExtraData (ks.h)

La función KsAllocateExtraData se usa con IRP de streaming para asignar un búfer para contener datos de encabezado adicionales. Se devuelve un puntero al búfer asignado y el autor de la llamada debe liberar el búfer.

Sintaxis

KSDDKAPI NTSTATUS KsAllocateExtraData(
  [in, out] PIRP  Irp,
  [in]      ULONG ExtraSize,
  [out]     PVOID *ExtraBuffer
);

Parámetros

[in, out] Irp

Especifica el IRP que contiene los encabezados de secuencia. El IRP debe haberse pasado previamente a KsProbeStreamIrp para almacenar en búfer los encabezados.

[in] ExtraSize

Especifica el tamaño, en bytes, de memoria adicional que se asignará entre cada encabezado de secuencia. Este valor debe ser alineable en un límite de ocho bytes. Una copia de los encabezados se coloca en el búfer devuelto, con el tamaño de datos adicional insertado entre cada encabezado. El autor de la llamada debe liberarlo.

[out] ExtraBuffer

Apunta a un puntero asignado por el autor de la llamada que, al finalizar correctamente, apunta a un búfer asignado por el sistema que contiene los encabezados de secuencia y el relleno solicitado entre ellos. El autor de la llamada debe liberarlo.

Valor devuelto

La función KsAllocateExtraData devuelve STATUS_SUCCESS si se ejecuta correctamente o devuelve un error de acceso o recurso.

Comentarios

Cuando KsAllocateExtraData se completa correctamente, se devuelve un puntero a un bloque de memoria que contiene los encabezados de datos de flujo del IRP, especificados en Irp y relleno entre cada encabezado de tamaño especificado en ExtraSize. A continuación se muestra un ejemplo de este búfer resultante:

Diagrama que ilustra un búfer resultante.

Cuando ya no se necesita el búfer adicional, la memoria debe liberarse mediante ExFreePool.

Requisitos

Requisito Value
Plataforma de destino Universal
Encabezado ks.h (incluye Ks.h)
Library Ks.lib
IRQL < DISPATCH_LEVEL