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

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

Syntax

void ReadStructFromUser(
  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

ReadStructFromMode

ReadStructFromUserHelper

WriteStructToUser