Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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, fora] Um ponteiro para o local da memória que contém o 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] O valor de troca.
Comperand
[in] The value to compare to Destination.
Mode
[in] O modo de processador que determina como o acesso à memória é executado. Mode can be one of the following values.
| Value | Meaning |
|---|---|
| KernelMode | Destination points to kernel-mode memory. A função executa uma operação direta de comparação e troca atômica. Consulte Comentários para obter mais detalhes. |
| 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 Comentários para obter mais detalhes. |
Return value
The function returns the initial value of the Destination parameter.
Remarks
As funções intertravadas fornecem um mecanismo simples para sincronizar o acesso a uma variável compartilhada por vários threads. Essa função é atômica em relação a chamadas para outras funções intertravadas. Ele gera uma barreira de memória completa para garantir que as operações de memória sejam concluídas em ordem.
Essa função fornece acesso atômico de comparação e troca a um valor de 32 bits na memória. 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. Caso contrário, nenhuma operação será executada. O comportamento depende do modo de processador 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.
A função gerará uma exceção estruturada se a operação falhar, como quando o endereço de destino não estiver acessível ou for inválido para o modo especificado.
Essa função funciona em todas as versões do Windows, não apenas nas mais recentes. 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. No entanto, o driver resultante será executado bem em versões mais antigas do Windows.
Requirements
| Requirement | Value |
|---|---|
| Cliente mínimo suportado | See Remarks |
| Header | usermode_accessors.h |
| Library | umaccess.lib |
| IRQL | Menor ou igual a APC_LEVEL |