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

The SetUserMemory function fills a user-mode memory region with a specified byte value.

Syntax

VOID SetUserMemory(
  volatile VOID *Destination,
  UCHAR         Fill,
  SIZE_T        Length
);

Parameters

Destination

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

Fill

[in] The byte value used to fill the first Length bytes of Destination.

Length

[in] The number of bytes to fill with the Fill value.

Return value

None

Remarks

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

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

  • The function performs a volatile fill using memory_order_relaxed semantics.

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

  • When the call returns, the buffer has been overwritten with the specified Fill value. 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

SetModeMemory

FillUserMemory

ZeroUserMemory

CopyToUser