Поделиться через


Функция ZeroDeviceMemory

Функция ZeroDeviceMemory задает содержимое буфера на нули без помех при оптимизации компилятора в ситуациях, когда разработчику необходимо дополнительно убедиться, что при доступе к памяти устройства не будут создаваться ошибки выравнивания.

Важно!

Некоторые сведения относятся к предварительному продукту, который может быть существенно изменен до его коммерческого выпуска. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.

Параметры

Назначение Param [out]

Указатель на начальный адрес блока памяти для заполнения нулями.

Длина param [in]

Размер блока памяти для заполнения нулями в байтах.

Синтаксис

volatile void*
  ZeroDeviceMemory (
    _Out_writes_bytes_all_(Length) volatile void* Destination,
    SIZE_T Length
  );

Замечания

Этот API является удобной оболочкой вокруг FillDeviceMemory. Дополнительные сведения см. в замечаниях FillDeviceMemory .

Примечание.

Эта функция работает во всех версиях Windows, а не только на последних версиях. Чтобы получить объявление функции из заголовка winbase.h , необходимо использовать последний пакет SDK. Вам также нужна библиотека (volatileaccessu.lib) из последнего пакета SDK. Однако результирующий двоичный файл будет работать в более ранних версиях Windows.

Пример

// In this scenario we are setting data on memory mapped
// as "device memory" (i.e. 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 (i.e. a 4-byte
// load must be 4-byte aligned). Functions like memset, FillMemory,
// and even FillVolatileMemory may perform unaligned memory accesses
// because it is typically faster to do this.
// To ensure only naturally aligned accesses happen, use FillDeviceMemory.
//
// ZeroDeviceMemory is an wrapper around FillDeviceMemory that sets the memory
// to zero.

ZeroDeviceMemory(DeviceMemoryBuffer, 100);

Requirements

Минимальный поддерживаемый клиент: сборка предварительной версии Windows 11 Insider Preview ТБ D

Заголовок: winbase.h (включая Winbase.h)

Библиотека режима ядра: volatileaccessk.lib

Библиотека пользовательского режима: volatileaccessu.lib

См. также