[适用于 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。 |