Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
The InterlockedCompareExchange64ToMode function performs an atomic compare-and-exchange operation on a 64-bit value, based on the specified processor mode.
Syntax
LONG64 InterlockedCompareExchange64ToMode(
LONG64 volatile *Destination,
LONG64 ExChange,
LONG64 Comperand,
KPROCESSOR_MODE Mode
);
Parameters
Destination
[in, out] Pointeur vers l’emplacement de mémoire contenant la valeur de destination. The pointer must be naturally aligned for the data type; that is, the memory location must be 8-byte aligned since Destination points to an 8-byte type.
ExChange
[in] Valeur d’échange.
Comperand
[in] The value to compare to Destination.
Mode
[in] Mode processeur qui détermine la façon dont l’accès à la mémoire est effectué. Mode can be one of the following values.
| Value | Meaning |
|---|---|
| KernelMode | Destination points to kernel-mode memory. La fonction effectue une opération de comparaison et d’échange atomique directe. Pour plus d’informations, consultez les remarques. |
| 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. Pour plus d’informations, consultez les remarques. |
Return value
The function returns the initial value of the Destination parameter.
Remarks
Les fonctions interblocées fournissent un mécanisme simple pour synchroniser l’accès à une variable partagée par plusieurs threads. Cette fonction est atomique par rapport aux appels à d’autres fonctions interblocées. Il génère une barrière de mémoire complète pour s’assurer que les opérations de mémoire sont terminées dans l’ordre.
Cette fonction fournit un accès atomique compare-and-exchange à une valeur 64 bits en mémoire. 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. Sinon, aucune opération n’est effectuée. Le comportement dépend du mode processeur spécifié :
- 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 fonction déclenche une exception structurée si l’opération échoue, par exemple lorsque l’adresse de destination n’est pas accessible ou n’est pas valide pour le mode spécifié.
Cette fonction fonctionne sur toutes les versions de Windows, pas seulement sur la dernière version. 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. Toutefois, le pilote résultant s’exécutera correctement sur les versions antérieures de Windows.
Requirements
| Requirement | Value |
|---|---|
| Client minimum requis | See Remarks |
| Header | usermode_accessors.h |
| Library | umaccess.lib |
| IRQL | Inférieur ou égal à APC_LEVEL |