Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Макрос 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 |