Макрос WriteStructToUser (usermode_accessors.h)

Макрос WriteStructToUser безопасно записывает структуру в память пользовательского режима.

Syntax

void WriteStructToUser(
  Destination,
  Source
);

Parameters

Destination

[out] Указатель на расположение памяти в пользовательском режиме, в котором будет записана структура.

Source

[in] Указатель на структуру для записи в расположение целевой памяти.

Return value

None

Remarks

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

Макрос проверяет, что точка источника и назначения совместима с типами и автоматически определяет размер структуры для операции копирования.

Этот макрос не применяет выравнивание.

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

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

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

Requirements

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

See also

ReadStructFromUser

WriteStructToMode

WriteStructToUserHelper