Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Макрос ReadStructFromMode безопасно считывает структуру из памяти на основе указанного режима процессора.
Syntax
void ReadStructFromMode(
Destination,
Source,
Mode
);
Parameters
Destination
[out] Указатель на структуру, которая получает данные, считываемые из памяти.
Source
[in] Указатель на расположение памяти, из которого следует считывать структуру.
Mode
[in] Режим процессора, определяющий, как выполняется доступ к памяти. Режим может быть одним из следующих значений.
| Value | Meaning |
|---|---|
| KernelMode | Источник указывает на память в режиме ядра. Макрос выполняет чтение из указанного адреса с семантикой memory_order_relaxed. Дополнительные сведения см. в примечаниях. |
| UserMode | Источник указывает на память в пользовательском режиме. Макрос вызывает исключение, если источник не указывает на память в пользовательском режиме; в противном случае он выполняет чтение из указанного адреса с memory_order_relaxed семантикой. Дополнительные сведения см. в примечаниях. |
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 |