функция WDF_ALIGN_SIZE_UP (wdfcore.h)

[Применимо к KMDF и UMDF]

Функция WDF_ALIGN_SIZE_UP возвращает следующий размер буфера, выравниваемый по указанному смещению выравнивания.

Синтаксис

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

Параметры

[in] Length

Длина буфера памяти в байтах.

[in] AlignTo

Смещение выравнивания в байтах. Это значение должно быть степенью 2, например 2, 4, 8, 16 и т. д.

Возвращаемое значение

WDF_ALIGN_SIZE_UP возвращает выровненный размер буфера в байтах.

Комментарии

Драйверы могут использовать WDF_ALIGN_SIZE_UP или WDF_ALIGN_SIZE_DOWN для вычисления размера буфера, выровненного по указанному смещению выравнивания. Это вычисление полезно, если драйвер должен выделить несколько смежных буферов, если каждый буфер должен начинаться с границы выравнивания адресов.

Если значение любого из входных параметров слишком велико, арифметическое переполнение приводит к тому, что WDF_ALIGN_SIZE_UP возвращает недопустимое значение, которое меньше длины. Код должен проверить это условие.

Примеры

В следующем примере кода получается размер буфера и возвращается размер (текущий или следующий размер), который соответствует границе адреса DWORD.

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

Требования

Требование Значение
Целевая платформа Универсальное
Минимальная версия KMDF 1,0
Минимальная версия UMDF 2,0
Верхняя часть wdfcore.h (включая Wdf.h)
Библиотека Wdf01000.sys (см. раздел Управление версиями библиотеки Платформы).
IRQL Любой IRQL.

См. также раздел

WDF_ALIGN_SIZE_DOWN