Share via


RegistryTestExchangeDWORD

Send Feedback

This function atomically sets a value based on a condition.

HRESULT WINAPI RegistryTestExchangeDWORD( 
  HKEY hKey,
  LPCTSTR pszSubKey,
  LPCTSTR pszValueName,
  DWORD dwOldValue,
  DWORD dwNewValue 
);

Parameters

  • hKey
    [in] Handle to the open key or a predefined root value.
  • pszSubKey
    [in] Key where the value is stored. If this value is NULL, then pszValueName is assumed to be under hkey.
  • pszValueName
    [in] Named value to set. If this value is NULL, the function sets the default value.
  • dwOldValue
    [in] Value to check against.
  • dwNewValue
    [in] Value to set conditionally.

Return Values

The following table shows the return values for this function.

Value Description
S_OK Value is changed to dwNewValue.
ERROR_NO_MATCH Value is not changed to dwNewValue because the current value in the registry is not equal to dwOldValue.
E_INVALIDARG Invalid hkey or pszValueName.
E_DATATYPE_MISMATCH Value is not type REG_DWORD.
An error value returned by RegOpenKey or RegQueryValueEx. Error value wrapped as a FACILITY_WIN32 HRESULT.

Remarks

Success indicates that the old value is replaced by the new value. Failure does not cause any change.

RegistryTestExchangeDWORD is an interlocked function. It behaves similarly to the Microsoft Win32 InterlockedTestExchange funtion. It checks to see if the DWORD value associated with pszValueName is equal to dwOldValue. If the values are equal, the function sets the target to dwNewValue; otherwise, the function fails.

If the client might be calling RegistryTestExchangeDWORD multiple times, it should cache a handle to the key using RegOpenKeyEx and pass the handle instead of passing a string value. Every time RegistryTestExchangeDWORD is called with a string value for the key, the RegOpenKeyEx and RegCloseKey functions are called, so passing a handle instead of a string value can avert a potential performance problem over mutltiple calls.

Requirements

Pocket PC: Windows Mobile 5.0 and later.
Smartphone: Windows Mobile 5.0 and later.
OS Versions: Windows CE 5.01 and later.
Header: Regext.h
Link Library: Aygshell.lib

See Also

State and Notifications Broker Functions | State and Notifications Broker Reference | State and Notifications Broker

Send Feedback on this topic to the authors

Feedback FAQs

© 2006 Microsoft Corporation. All rights reserved.