Функция ZeroUserMemory (usermode_accessors.h)

The ZeroUserMemory function fills a user-mode memory region with zeros.

Syntax

VOID ZeroUserMemory(
  volatile VOID *Destination,
  SIZE_T        Length
);

Parameters

Destination

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

Length

[in] Число байтов до нуля.

Return value

None

Remarks

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

Функция имеет следующие свойства:

  • The function performs a volatile zero operation using memory_order_relaxed semantics.

  • Функция не распознается как встроенный компилятор, поэтому компилятор никогда не оптимизирует вызов (полностью или замените вызов эквивалентной последовательностью инструкций).

  • При возвращении вызова буфер был перезаписан с нулями. This function's memory accesses to the Destination will only be performed within the function (for example, the compiler can't move memory accesses out of this function).

  • Функция может выполнять неуправляемый доступ к памяти, если платформа позволяет ей.

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

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

Эта функция никогда не будет оптимизирована компилятором, и компилятор не создаст дополнительные доступы к этому расположению памяти до вызова функции или после возврата функции (если исходный код явно не выполняет эти доступы).

Эта функция работает во всех версиях Windows, а не только на последних версиях. You need to consume the latest WDK to get the function declaration from the usermode_accessors.h header. You also need the library (umaccess.lib) from the latest WDK. Однако результирующий драйвер будет работать в более ранних версиях Windows.

Requirements

Requirement Value
Минимальный поддерживаемый клиент See Remarks
Header usermode_accessors.h
Library umaccess.lib
IRQL Меньше или равно APC_LEVEL

See also

ZeroModeMemory

SetUserMemory

FillUserMemory

CopyToUser