A version of this page is also available for

Windows Embedded CE 6.0 R3


This function is an interlocked function that performs a conditional setting of a variable.


LONG WINAPI InterlockedTestExchange(
  LPLONG Target,
  LONG OldValue,
  LONG NewValue


  • Target
    [in] Pointer to the LONG variable to check and set.
  • OldValue
    [in] Value to check against.
  • NewValue
    [in] Value to set to conditionally.

Return Value

The original value pointed to by Target at the time of the call indicates success.


The InterlockedTestExchange function is an interlocked function. In other words, it can be considered atomic. It checks to see if the value pointed to by Target is equal to OldValue. If so, it sets Target to NewValue. Because InterlockedTestExchange returns the old value pointed to by Target, if the return value is OldValue, then InterlockedTestExchange succeeded and set the value pointed to by Target to NewValue. Otherwise, it failed.


Header winbase.h
Library coredll.lib
Windows Embedded CE Windows CE 1.0 and later
Windows Mobile Windows Mobile Version 5.0 and later

See Also


Synchronization Functions