Compartir a través de


función WDF_ALIGN_SIZE_UP (wdfcore.h)

[Se aplica a KMDF y UMDF]

La función WDF_ALIGN_SIZE_UP devuelve el siguiente tamaño de búfer superior que está alineado con un desplazamiento de alineación especificado.

Sintaxis

size_t WDF_ALIGN_SIZE_UP(
  [in] size_t Length,
  [in] size_t AlignTo
);

Parámetros

[in] Length

Longitud, en bytes, de un búfer de memoria.

[in] AlignTo

Desplazamiento de alineación, en bytes. Este valor debe ser una potencia de 2, como 2, 4, 8, 16, etc.

Valor devuelto

WDF_ALIGN_SIZE_UP devuelve el tamaño del búfer alineado, en bytes.

Comentarios

Los controladores pueden usar WDF_ALIGN_SIZE_UP o WDF_ALIGN_SIZE_DOWN para calcular un tamaño de búfer alineado con un desplazamiento de alineación especificado. Este cálculo es útil si el controlador debe asignar varios búferes contiguos, si cada búfer debe comenzar en un límite de alineación de direcciones.

Si el valor de cualquiera de los parámetros de entrada es demasiado grande, el desbordamiento aritmético hace que WDF_ALIGN_SIZE_UP devuelva un valor no válido menor que Length. El código debe probar esta condición.

Ejemplos

En el ejemplo de código siguiente se recibe un tamaño de búfer y se devuelve el tamaño (el tamaño actual o el siguiente tamaño superior) que se alinea con un límite de dirección DWORD.

bufferSizeAligned = WDF_ALIGN_SIZE_UP(bufferSize,
                                      sizeof(DWORD));
if (bufferSizeAligned < bufferSize)
{
    // Buffer too large.
    ...
}

Requisitos

Requisito Value
Plataforma de destino Universal
Versión mínima de KMDF 1.0
Versión mínima de UMDF 2.0
Encabezado wdfcore.h (incluya Wdf.h)
Library Wdf01000.sys (consulte Control de versiones de la biblioteca de marcos).
IRQL Cualquier IRQL.

Consulte también

WDF_ALIGN_SIZE_DOWN