Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Макрос WriteStructToUserAligned безопасно записывает структуру в память пользовательского режима с проверкой выравнивания.
Syntax
void WriteStructToUserAligned(
Destination,
Source,
Alignment
);
Parameters
Destination
[out] Указатель на расположение памяти в пользовательском режиме, в котором будет записана структура.
Source
[in] Указатель на структуру для записи в расположение целевой памяти.
Alignment
[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 |