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:
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 |