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 InterlockedCompareExchangeToMode function performs an atomic compare-and-exchange operation on a 32-bit value, based on the specified processor mode.
Syntax
LONG InterlockedCompareExchangeToMode(
LONG volatile *Destination,
LONG ExChange,
LONG Comperand,
KPROCESSOR_MODE Mode
);
Parameters
Destination
[dentro, fuera] Puntero a la ubicación de memoria que contiene el valor de destino. The pointer must be naturally aligned for the data type; that is, the memory location must be 4-byte aligned since Destination points to a 4-byte type.
ExChange
[in] Valor de intercambio.
Comperand
[in] The value to compare to Destination.
Mode
[in] Modo de procesador que determina cómo se realiza el acceso a la memoria. Mode can be one of the following values.
| Value | Meaning |
|---|---|
| KernelMode | Destination points to kernel-mode memory. La función realiza una operación de comparación e intercambio atómica directa. Consulte Comentarios para obtener más información. |
| UserMode | Destination points to user-mode memory. The function raises an exception if Destination doesn't point to user-mode memory; otherwise it performs an atomic compare-and-exchange operation at the specified address. Consulte Comentarios para obtener más información. |
Return value
The function returns the initial value of the Destination parameter.
Remarks
Las funciones interbloqueadas proporcionan un mecanismo sencillo para sincronizar el acceso a una variable compartida por varios subprocesos. Esta función es atómica con respecto a las llamadas a otras funciones interbloqueadas. Genera una barrera de memoria completa para asegurarse de que las operaciones de memoria se completan en orden.
Esta función proporciona acceso de intercambio y comparación atómica a un valor de 32 bits en memoria. The function compares the Destination value with the Comperand value. If the Destination value is equal to the Comperand value, the ExChange value is stored in the address specified by Destination. De lo contrario, no se realiza ninguna operación. El comportamiento depende del modo de procesador especificado:
- When Mode is UserMode, the function ensures that the destination address is a valid user-mode address and performs the operation safely for user-mode memory access.
- When Mode is KernelMode, the function operates directly on kernel-mode addresses.
La función genera una excepción estructurada si se produce un error en la operación, como cuando la dirección de destino no es accesible o no es válida para el modo especificado.
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 |