Функция RtlZeroDeviceMemory (wdm.h)
Функция RtlZeroDeviceMemory — это удобная оболочка для RtlFillDeviceMemory.
Синтаксис
volatile void * RtlZeroDeviceMemory(
[out] volatile void *Destination,
[in] size_t Length
);
Параметры
[out] Destination
Указатель на начальный адрес блока памяти для заполнения нулями.
[in] Length
Размер блока памяти для заполнения нулями в байтах.
Возвращаемое значение
Возвращает значение Destination.
Комментарии
Функция RtlZeroDeviceMemory — это удобная оболочка для RtlFillDeviceMemory.
Дополнительные сведения см. в разделе примечаний статьи RtlFillDeviceMemory.
Примечание
Эта функция работает во всех версиях Windows, а не только в последней версии. Чтобы получить объявление функции из заголовка wdm.h, необходимо использовать последнюю версию WDK. Вам также потребуется библиотека (volatileaccessk.lib) из последней версии WDK. Однако результирующий драйвер будет работать нормально в более старых версиях Windows.
Пример
// In this scenario we are setting data on memory mapped
// as "device memory" (for example, memory not backed by RAM) to the value zero. On
// some platforms like ARM64, device memory cannot tolerate
// memory accesses that are not naturally aligned (for example, a 4-byte
// load must be 4-byte aligned). Functions like memset, RtlFillMemory,
// and even RtlFillVolatileMemory may perform unaligned memory accesses
// because it is typically faster to do this.
// To ensure only naturally aligned accesses happen, use RtlFillDeviceMemory.
//
// RtlZeroDeviceMemory is an wrapper around RtlFillDeviceMemory that sets the memory
// to zero.
RtlZeroDeviceMemory(DeviceMemoryBuffer, 100);
Требования
Требование | Значение |
---|---|
Заголовок | wdm.h (включая Wdm.h) |
Библиотека | volatileaccessk.lib (режим ядра), volatileaccessu.lib (пользовательский режим) |