Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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] Puntero a la dirección inicial de la ubicación de memoria en modo de usuario donde se copiarán los datos.
Source
[in] Puntero a la dirección inicial de la ubicación de memoria en modo de usuario desde la que se van a copiar los datos.
Length
[in] Número de bytes que se van a mover.
Return value
None
Remarks
Esta función proporciona una manera segura de mover datos de la memoria en modo de usuario a la memoria en modo de usuario con compatibilidad con regiones de memoria superpuestas.
La función tiene las siguientes propiedades:
The function performs a move using memory_order_relaxed semantics.
La función no se reconoce como intrínseca del compilador, por lo que el compilador nunca optimizará la llamada (por completo o reemplazará la llamada por una secuencia equivalente de instrucciones).
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).
La función puede realizar accesos no asignados si la plataforma lo permite.
La función puede tener acceso a ubicaciones de memoria más de una vez como parte de su operación de relleno.
La función valida que ambos punteros hacen referencia a la memoria en modo de usuario y genera una excepción estructurada si se produce un error en la operación de movimiento, como cuando las direcciones de origen o destino no son direcciones válidas en modo de usuario o no son accesibles.
Esta función funciona en todas las versiones de Windows, no solo en la más reciente. 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. Sin embargo, el controlador resultante se ejecutará correctamente en versiones anteriores de Windows.
Requirements
| Requirement | Value |
|---|---|
| Cliente mínimo compatible | See Remarks |
| Header | usermode_accessors.h |
| Library | umaccess.lib |
| IRQL | Menor o igual que APC_LEVEL |