Compartir a través de


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 va a asignar entre cada encabezado de secuencia. Este valor debe alinearse 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.

Observaciones

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 Irpy 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 Valor
de la plataforma de destino de Universal
encabezado de ks.h (incluya Ks.h)
biblioteca de Ks.lib
irQL < DISPATCH_LEVEL