Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
The MoveToUserFromUser function safely moves data from user-mode memory to user-mode memory, supporting overlapping memory regions.
Syntax
VOID MoveToUserFromUser(
volatile VOID *Destination,
volatile const VOID *Source,
SIZE_T Length
);
Parameters
Destination
[out] Указатель на начальный адрес расположения памяти в пользовательском режиме, где будут скопированы данные.
Source
[in] Указатель на начальный адрес расположения памяти в пользовательском режиме, из которого копируются данные.
Length
[in] Количество байтов для перемещения.
Return value
None
Remarks
Эта функция обеспечивает безопасный способ перемещения данных из памяти пользовательского режима в память пользовательского режима с поддержкой перекрывающихся областей памяти.
Функция имеет следующие свойства:
The function performs a move using memory_order_relaxed semantics.
Функция не распознается как встроенный компилятор, поэтому компилятор никогда не оптимизирует вызов (полностью или замените вызов эквивалентной последовательностью инструкций).
When the call returns, the data has been copied from Source to Destination. This function's memory accesses to the Source and Destination will only be performed within the function (for example, the compiler can't move memory accesses out of this function).
Функция может выполнять незамеченные доступы, если платформа позволяет ей.
Функция может получить доступ к расположениям памяти более одного раза в рамках операции заполнения.
Функция проверяет, что оба указателя ссылаются на память в пользовательском режиме и вызывает структурированное исключение, если операция перемещения завершается ошибкой, например если адреса источника или назначения недопустимы или недоступны.
Эта функция работает во всех версиях Windows, а не только на последних версиях. You need to consume the latest WDK to get the function declaration from the usermode_accessors.h header. You also need the library (umaccess.lib) from the latest WDK. Однако результирующий драйвер будет работать в более ранних версиях Windows.
Requirements
| Requirement | Value |
|---|---|
| Минимальный поддерживаемый клиент | See Remarks |
| Header | usermode_accessors.h |
| Library | umaccess.lib |
| IRQL | Меньше или равно APC_LEVEL |