1 /** 2 * This file has no copyright assigned and is placed in the Public Domain. 3 * This file is part of the mingw-w64 runtime package. 4 * No warranty is given; refer to the file DISCLAIMER.PD within this package. 5 */ 6 #ifndef _WINREG_ 7 #define _WINREG_ 8 9 #include <_mingw_unicode.h> 10 #include <winapifamily.h> 11 12 #ifdef __cplusplus 13 extern "C" { 14 #endif 15 16 #ifndef WINVER 17 #define WINVER 0x0502 18 #endif 19 20 #define RRF_RT_REG_NONE 0x00000001 21 #define RRF_RT_REG_SZ 0x00000002 22 #define RRF_RT_REG_EXPAND_SZ 0x00000004 23 #define RRF_RT_REG_BINARY 0x00000008 24 #define RRF_RT_REG_DWORD 0x00000010 25 #define RRF_RT_REG_MULTI_SZ 0x00000020 26 #define RRF_RT_REG_QWORD 0x00000040 27 28 #define RRF_RT_DWORD (RRF_RT_REG_BINARY | RRF_RT_REG_DWORD) 29 #define RRF_RT_QWORD (RRF_RT_REG_BINARY | RRF_RT_REG_QWORD) 30 #define RRF_RT_ANY 0x0000ffff 31 32 #if (_WIN32_WINNT >= 0x0A00) 33 #define RRF_SUBKEY_WOW6464KEY 0x00010000 34 #define RRF_SUBKEY_WOW6432KEY 0x00020000 35 #define RRF_WOW64_MASK 0x00030000 36 #endif 37 38 #define RRF_NOEXPAND 0x10000000 39 #define RRF_ZEROONFAILURE 0x20000000 40 41 #define REG_PROCESS_APPKEY 0x00000001 42 43 typedef ACCESS_MASK REGSAM; 44 typedef LONG LSTATUS; 45 46 #define HKEY_CLASSES_ROOT ((HKEY) (ULONG_PTR)((LONG)0x80000000)) 47 #define HKEY_CURRENT_USER ((HKEY) (ULONG_PTR)((LONG)0x80000001)) 48 #define HKEY_LOCAL_MACHINE ((HKEY) (ULONG_PTR)((LONG)0x80000002)) 49 #define HKEY_USERS ((HKEY) (ULONG_PTR)((LONG)0x80000003)) 50 #define HKEY_PERFORMANCE_DATA ((HKEY) (ULONG_PTR)((LONG)0x80000004)) 51 #define HKEY_PERFORMANCE_TEXT ((HKEY) (ULONG_PTR)((LONG)0x80000050)) 52 #define HKEY_PERFORMANCE_NLSTEXT ((HKEY) (ULONG_PTR)((LONG)0x80000060)) 53 #if (WINVER >= 0x0400) 54 #define HKEY_CURRENT_CONFIG ((HKEY) (ULONG_PTR)((LONG)0x80000005)) 55 #define HKEY_DYN_DATA ((HKEY) (ULONG_PTR)((LONG)0x80000006)) 56 #define HKEY_CURRENT_USER_LOCAL_SETTINGS ((HKEY) (ULONG_PTR)((LONG)0x80000007)) 57 58 #ifndef _PROVIDER_STRUCTS_DEFINED 59 #define _PROVIDER_STRUCTS_DEFINED 60 61 #define PROVIDER_KEEPS_VALUE_LENGTH 0x1 62 struct val_context { 63 int valuelen; 64 LPVOID value_context; 65 LPVOID val_buff_ptr; 66 }; 67 68 typedef struct val_context *PVALCONTEXT; 69 70 typedef struct pvalueA { 71 LPSTR pv_valuename; 72 int pv_valuelen; 73 LPVOID pv_value_context; 74 DWORD pv_type; 75 }PVALUEA,*PPVALUEA; 76 77 typedef struct pvalueW { 78 LPWSTR pv_valuename; 79 int pv_valuelen; 80 LPVOID pv_value_context; 81 DWORD pv_type; 82 }PVALUEW,*PPVALUEW; 83 84 __MINGW_TYPEDEF_AW(PVALUE) 85 __MINGW_TYPEDEF_AW(PPVALUE) 86 87 typedef DWORD __cdecl QUERYHANDLER(LPVOID keycontext,PVALCONTEXT val_list,DWORD num_vals,LPVOID outputbuffer,DWORD *total_outlen,DWORD input_blen); 88 89 typedef QUERYHANDLER *PQUERYHANDLER; 90 91 typedef struct provider_info { 92 PQUERYHANDLER pi_R0_1val; 93 PQUERYHANDLER pi_R0_allvals; 94 PQUERYHANDLER pi_R3_1val; 95 PQUERYHANDLER pi_R3_allvals; 96 DWORD pi_flags; 97 LPVOID pi_key_context; 98 } REG_PROVIDER; 99 100 typedef struct provider_info *PPROVIDER; 101 102 typedef struct value_entA { 103 LPSTR ve_valuename; 104 DWORD ve_valuelen; 105 DWORD_PTR ve_valueptr; 106 DWORD ve_type; 107 } VALENTA,*PVALENTA; 108 109 typedef struct value_entW { 110 LPWSTR ve_valuename; 111 DWORD ve_valuelen; 112 DWORD_PTR ve_valueptr; 113 DWORD ve_type; 114 } VALENTW,*PVALENTW; 115 116 __MINGW_TYPEDEF_AW(VALENT) 117 __MINGW_TYPEDEF_AW(PVALENT) 118 #endif 119 #endif 120 121 #define WIN31_CLASS NULL 122 123 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) 124 125 #define REG_MUI_STRING_TRUNCATE 0x00000001 126 127 #if (WINVER >= 0x0400) 128 #define REG_SECURE_CONNECTION 1 129 #endif 130 131 #define RegConnectRegistry __MINGW_NAME_AW(RegConnectRegistry) 132 #define RegConnectRegistryEx __MINGW_NAME_AW(RegConnectRegistryEx) 133 #define RegCreateKey __MINGW_NAME_AW(RegCreateKey) 134 #define RegCreateKeyEx __MINGW_NAME_AW(RegCreateKeyEx) 135 #define RegDeleteKey __MINGW_NAME_AW(RegDeleteKey) 136 #define RegDeleteKeyEx __MINGW_NAME_AW(RegDeleteKeyEx) 137 #define RegDeleteValue __MINGW_NAME_AW(RegDeleteValue) 138 #define RegEnumKey __MINGW_NAME_AW(RegEnumKey) 139 #define RegEnumKeyEx __MINGW_NAME_AW(RegEnumKeyEx) 140 #define RegEnumValue __MINGW_NAME_AW(RegEnumValue) 141 #define RegLoadKey __MINGW_NAME_AW(RegLoadKey) 142 #define RegOpenKey __MINGW_NAME_AW(RegOpenKey) 143 #define RegOpenKeyEx __MINGW_NAME_AW(RegOpenKeyEx) 144 #define RegQueryInfoKey __MINGW_NAME_AW(RegQueryInfoKey) 145 #define RegQueryValue __MINGW_NAME_AW(RegQueryValue) 146 #define RegQueryMultipleValues __MINGW_NAME_AW(RegQueryMultipleValues) 147 #define RegQueryValueEx __MINGW_NAME_AW(RegQueryValueEx) 148 #define RegReplaceKey __MINGW_NAME_AW(RegReplaceKey) 149 #define RegRestoreKey __MINGW_NAME_AW(RegRestoreKey) 150 #define RegSaveKey __MINGW_NAME_AW(RegSaveKey) 151 #define RegSetValue __MINGW_NAME_AW(RegSetValue) 152 #define RegSetValueEx __MINGW_NAME_AW(RegSetValueEx) 153 #define RegUnLoadKey __MINGW_NAME_AW(RegUnLoadKey) 154 #define RegGetValue __MINGW_NAME_AW(RegGetValue) 155 #define InitiateSystemShutdown __MINGW_NAME_AW(InitiateSystemShutdown) 156 #define AbortSystemShutdown __MINGW_NAME_AW(AbortSystemShutdown) 157 158 WINADVAPI LONG WINAPI RegCloseKey(HKEY hKey); 159 WINADVAPI LONG WINAPI RegOverridePredefKey(HKEY hKey,HKEY hNewHKey); 160 WINADVAPI LONG WINAPI RegOpenUserClassesRoot(HANDLE hToken,DWORD dwOptions,REGSAM samDesired,PHKEY phkResult); 161 WINADVAPI LONG WINAPI RegOpenCurrentUser(REGSAM samDesired,PHKEY phkResult); 162 WINADVAPI LONG WINAPI RegDisablePredefinedCache(void); 163 WINADVAPI LONG WINAPI RegDisablePredefinedCacheEx(void); 164 WINADVAPI LONG WINAPI RegConnectRegistryA(LPCSTR lpMachineName,HKEY hKey,PHKEY phkResult); 165 WINADVAPI LONG WINAPI RegConnectRegistryW(LPCWSTR lpMachineName,HKEY hKey,PHKEY phkResult); 166 WINADVAPI LONG WINAPI RegConnectRegistryExA(LPCSTR lpMachineName,HKEY hKey,ULONG Flags,PHKEY phkResult); 167 WINADVAPI LONG WINAPI RegConnectRegistryExW(LPCWSTR lpMachineName,HKEY hKey,ULONG Flags,PHKEY phkResult); 168 WINADVAPI LONG WINAPI RegCreateKeyA(HKEY hKey,LPCSTR lpSubKey,PHKEY phkResult); 169 WINADVAPI LONG WINAPI RegCreateKeyW(HKEY hKey,LPCWSTR lpSubKey,PHKEY phkResult); 170 WINADVAPI LONG WINAPI RegCreateKeyExA(HKEY hKey,LPCSTR lpSubKey,DWORD Reserved,LPSTR lpClass,DWORD dwOptions,REGSAM samDesired,LPSECURITY_ATTRIBUTES lpSecurityAttributes,PHKEY phkResult,LPDWORD lpdwDisposition); 171 WINADVAPI LONG WINAPI RegCreateKeyExW(HKEY hKey,LPCWSTR lpSubKey,DWORD Reserved,LPWSTR lpClass,DWORD dwOptions,REGSAM samDesired,LPSECURITY_ATTRIBUTES lpSecurityAttributes,PHKEY phkResult,LPDWORD lpdwDisposition); 172 WINADVAPI LONG WINAPI RegDeleteKeyA(HKEY hKey,LPCSTR lpSubKey); 173 WINADVAPI LONG WINAPI RegDeleteKeyW(HKEY hKey,LPCWSTR lpSubKey); 174 WINADVAPI LONG WINAPI RegDeleteKeyExA(HKEY hKey,LPCSTR lpSubKey,REGSAM samDesired,DWORD Reserved); 175 WINADVAPI LONG WINAPI RegDeleteKeyExW(HKEY hKey,LPCWSTR lpSubKey,REGSAM samDesired,DWORD Reserved); 176 WINADVAPI LONG WINAPI RegDisableReflectionKey(HKEY hBase); 177 WINADVAPI LONG WINAPI RegEnableReflectionKey(HKEY hBase); 178 WINADVAPI LONG WINAPI RegQueryReflectionKey(HKEY hBase,WINBOOL *bIsReflectionDisabled); 179 WINADVAPI LONG WINAPI RegDeleteValueA(HKEY hKey,LPCSTR lpValueName); 180 WINADVAPI LONG WINAPI RegDeleteValueW(HKEY hKey,LPCWSTR lpValueName); 181 WINADVAPI LONG WINAPI RegEnumKeyA(HKEY hKey,DWORD dwIndex,LPSTR lpName,DWORD cchName); 182 WINADVAPI LONG WINAPI RegEnumKeyW(HKEY hKey,DWORD dwIndex,LPWSTR lpName,DWORD cchName); 183 WINADVAPI LONG WINAPI RegEnumKeyExA(HKEY hKey,DWORD dwIndex,LPSTR lpName,LPDWORD lpcchName,LPDWORD lpReserved,LPSTR lpClass,LPDWORD lpcchClass,PFILETIME lpftLastWriteTime); 184 WINADVAPI LONG WINAPI RegEnumKeyExW(HKEY hKey,DWORD dwIndex,LPWSTR lpName,LPDWORD lpcchName,LPDWORD lpReserved,LPWSTR lpClass,LPDWORD lpcchClass,PFILETIME lpftLastWriteTime); 185 WINADVAPI LONG WINAPI RegEnumValueA(HKEY hKey,DWORD dwIndex,LPSTR lpValueName,LPDWORD lpcchValueName,LPDWORD lpReserved,LPDWORD lpType,LPBYTE lpData,LPDWORD lpcbData); 186 WINADVAPI LONG WINAPI RegEnumValueW(HKEY hKey,DWORD dwIndex,LPWSTR lpValueName,LPDWORD lpcchValueName,LPDWORD lpReserved,LPDWORD lpType,LPBYTE lpData,LPDWORD lpcbData); 187 WINADVAPI LONG WINAPI RegFlushKey(HKEY hKey); 188 WINADVAPI LONG WINAPI RegGetKeySecurity(HKEY hKey,SECURITY_INFORMATION SecurityInformation,PSECURITY_DESCRIPTOR pSecurityDescriptor,LPDWORD lpcbSecurityDescriptor); 189 WINADVAPI LONG WINAPI RegLoadKeyA(HKEY hKey,LPCSTR lpSubKey,LPCSTR lpFile); 190 WINADVAPI LONG WINAPI RegLoadKeyW(HKEY hKey,LPCWSTR lpSubKey,LPCWSTR lpFile); 191 WINADVAPI LONG WINAPI RegNotifyChangeKeyValue(HKEY hKey,WINBOOL bWatchSubtree,DWORD dwNotifyFilter,HANDLE hEvent,WINBOOL fAsynchronous); 192 WINADVAPI LONG WINAPI RegOpenKeyA(HKEY hKey,LPCSTR lpSubKey,PHKEY phkResult); 193 WINADVAPI LONG WINAPI RegOpenKeyW(HKEY hKey,LPCWSTR lpSubKey,PHKEY phkResult); 194 WINADVAPI LONG WINAPI RegOpenKeyExA(HKEY hKey,LPCSTR lpSubKey,DWORD ulOptions,REGSAM samDesired,PHKEY phkResult); 195 WINADVAPI LONG WINAPI RegOpenKeyExW(HKEY hKey,LPCWSTR lpSubKey,DWORD ulOptions,REGSAM samDesired,PHKEY phkResult); 196 WINADVAPI LONG WINAPI RegQueryInfoKeyA(HKEY hKey,LPSTR lpClass,LPDWORD lpcchClass,LPDWORD lpReserved,LPDWORD lpcSubKeys,LPDWORD lpcbMaxSubKeyLen,LPDWORD lpcbMaxClassLen,LPDWORD lpcValues,LPDWORD lpcbMaxValueNameLen,LPDWORD lpcbMaxValueLen,LPDWORD lpcbSecurityDescriptor,PFILETIME lpftLastWriteTime); 197 WINADVAPI LONG WINAPI RegQueryInfoKeyW(HKEY hKey,LPWSTR lpClass,LPDWORD lpcchClass,LPDWORD lpReserved,LPDWORD lpcSubKeys,LPDWORD lpcbMaxSubKeyLen,LPDWORD lpcbMaxClassLen,LPDWORD lpcValues,LPDWORD lpcbMaxValueNameLen,LPDWORD lpcbMaxValueLen,LPDWORD lpcbSecurityDescriptor,PFILETIME lpftLastWriteTime); 198 WINADVAPI LONG WINAPI RegQueryValueA(HKEY hKey,LPCSTR lpSubKey,LPSTR lpData,PLONG lpcbData); 199 WINADVAPI LONG WINAPI RegQueryValueW(HKEY hKey,LPCWSTR lpSubKey,LPWSTR lpData,PLONG lpcbData); 200 WINADVAPI LONG WINAPI RegQueryMultipleValuesA(HKEY hKey,PVALENTA val_list,DWORD num_vals,LPSTR lpValueBuf,LPDWORD ldwTotsize); 201 WINADVAPI LONG WINAPI RegQueryMultipleValuesW(HKEY hKey,PVALENTW val_list,DWORD num_vals,LPWSTR lpValueBuf,LPDWORD ldwTotsize); 202 WINADVAPI LONG WINAPI RegQueryValueExA(HKEY hKey,LPCSTR lpValueName,LPDWORD lpReserved,LPDWORD lpType,LPBYTE lpData,LPDWORD lpcbData); 203 WINADVAPI LONG WINAPI RegQueryValueExW(HKEY hKey,LPCWSTR lpValueName,LPDWORD lpReserved,LPDWORD lpType,LPBYTE lpData,LPDWORD lpcbData); 204 WINADVAPI LONG WINAPI RegReplaceKeyA(HKEY hKey,LPCSTR lpSubKey,LPCSTR lpNewFile,LPCSTR lpOldFile); 205 WINADVAPI LONG WINAPI RegReplaceKeyW(HKEY hKey,LPCWSTR lpSubKey,LPCWSTR lpNewFile,LPCWSTR lpOldFile); 206 WINADVAPI LONG WINAPI RegRestoreKeyA(HKEY hKey,LPCSTR lpFile,DWORD dwFlags); 207 WINADVAPI LONG WINAPI RegRestoreKeyW(HKEY hKey,LPCWSTR lpFile,DWORD dwFlags); 208 WINADVAPI LONG WINAPI RegSaveKeyA(HKEY hKey,LPCSTR lpFile,LPSECURITY_ATTRIBUTES lpSecurityAttributes); 209 WINADVAPI LONG WINAPI RegSaveKeyW(HKEY hKey,LPCWSTR lpFile,LPSECURITY_ATTRIBUTES lpSecurityAttributes); 210 WINADVAPI LONG WINAPI RegSetKeySecurity(HKEY hKey,SECURITY_INFORMATION SecurityInformation,PSECURITY_DESCRIPTOR pSecurityDescriptor); 211 WINADVAPI LONG WINAPI RegSetValueA(HKEY hKey,LPCSTR lpSubKey,DWORD dwType,LPCSTR lpData,DWORD cbData); 212 WINADVAPI LONG WINAPI RegSetValueW(HKEY hKey,LPCWSTR lpSubKey,DWORD dwType,LPCWSTR lpData,DWORD cbData); 213 WINADVAPI LONG WINAPI RegSetValueExA(HKEY hKey,LPCSTR lpValueName,DWORD Reserved,DWORD dwType,CONST BYTE *lpData,DWORD cbData); 214 WINADVAPI LONG WINAPI RegSetValueExW(HKEY hKey,LPCWSTR lpValueName,DWORD Reserved,DWORD dwType,CONST BYTE *lpData,DWORD cbData); 215 WINADVAPI LONG WINAPI RegUnLoadKeyA(HKEY hKey,LPCSTR lpSubKey); 216 WINADVAPI LONG WINAPI RegUnLoadKeyW(HKEY hKey,LPCWSTR lpSubKey); 217 WINADVAPI LONG WINAPI RegGetValueA(HKEY hkey,LPCSTR lpSubKey,LPCSTR lpValue,DWORD dwFlags,LPDWORD pdwType,PVOID pvData,LPDWORD pcbData); 218 WINADVAPI LONG WINAPI RegGetValueW(HKEY hkey,LPCWSTR lpSubKey,LPCWSTR lpValue,DWORD dwFlags,LPDWORD pdwType,PVOID pvData,LPDWORD pcbData); 219 WINADVAPI WINBOOL WINAPI InitiateSystemShutdownA(LPSTR lpMachineName,LPSTR lpMessage,DWORD dwTimeout,WINBOOL bForceAppsClosed,WINBOOL bRebootAfterShutdown); 220 WINADVAPI WINBOOL WINAPI InitiateSystemShutdownW(LPWSTR lpMachineName,LPWSTR lpMessage,DWORD dwTimeout,WINBOOL bForceAppsClosed,WINBOOL bRebootAfterShutdown); 221 WINADVAPI WINBOOL WINAPI AbortSystemShutdownA(LPSTR lpMachineName); 222 WINADVAPI WINBOOL WINAPI AbortSystemShutdownW(LPWSTR lpMachineName); 223 224 #include <reason.h> 225 226 #define REASON_SWINSTALL SHTDN_REASON_MAJOR_SOFTWARE|SHTDN_REASON_MINOR_INSTALLATION 227 #define REASON_HWINSTALL SHTDN_REASON_MAJOR_HARDWARE|SHTDN_REASON_MINOR_INSTALLATION 228 #define REASON_SERVICEHANG SHTDN_REASON_MAJOR_SOFTWARE|SHTDN_REASON_MINOR_HUNG 229 #define REASON_UNSTABLE SHTDN_REASON_MAJOR_SYSTEM|SHTDN_REASON_MINOR_UNSTABLE 230 #define REASON_SWHWRECONF SHTDN_REASON_MAJOR_SOFTWARE|SHTDN_REASON_MINOR_RECONFIG 231 #define REASON_OTHER SHTDN_REASON_MAJOR_OTHER|SHTDN_REASON_MINOR_OTHER 232 #define REASON_UNKNOWN SHTDN_REASON_UNKNOWN 233 #define REASON_LEGACY_API SHTDN_REASON_LEGACY_API 234 #define REASON_PLANNED_FLAG SHTDN_REASON_FLAG_PLANNED 235 236 #define MAX_SHUTDOWN_TIMEOUT (10*365*24*60*60) 237 238 #define InitiateSystemShutdownEx __MINGW_NAME_AW(InitiateSystemShutdownEx) 239 #define RegSaveKeyEx __MINGW_NAME_AW(RegSaveKeyEx) 240 241 WINADVAPI WINBOOL WINAPI InitiateSystemShutdownExA(LPSTR lpMachineName,LPSTR lpMessage,DWORD dwTimeout,WINBOOL bForceAppsClosed,WINBOOL bRebootAfterShutdown,DWORD dwReason); 242 WINADVAPI WINBOOL WINAPI InitiateSystemShutdownExW(LPWSTR lpMachineName,LPWSTR lpMessage,DWORD dwTimeout,WINBOOL bForceAppsClosed,WINBOOL bRebootAfterShutdown,DWORD dwReason); 243 WINADVAPI LONG WINAPI RegSaveKeyExA(HKEY hKey,LPCSTR lpFile,LPSECURITY_ATTRIBUTES lpSecurityAttributes,DWORD Flags); 244 WINADVAPI LONG WINAPI RegSaveKeyExW(HKEY hKey,LPCWSTR lpFile,LPSECURITY_ATTRIBUTES lpSecurityAttributes,DWORD Flags); 245 WINADVAPI LONG WINAPI Wow64Win32ApiEntry (DWORD dwFuncNumber,DWORD dwFlag,DWORD dwRes); 246 247 #if (_WIN32_WINNT >= 0x0600) 248 249 #define RegCopyTree __MINGW_NAME_AW(RegCopyTree) 250 WINADVAPI LONG WINAPI RegCopyTreeA( 251 HKEY hKeySrc, 252 LPCSTR lpSubKey, 253 HKEY hKeyDest 254 ); 255 256 WINADVAPI LONG WINAPI RegCopyTreeW( 257 HKEY hKeySrc, 258 LPCWSTR lpSubKey, 259 HKEY hKeyDest 260 ); 261 262 #define RegCreateKeyTransacted __MINGW_NAME_AW(RegCreateKeyTransacted) 263 WINADVAPI LONG WINAPI RegCreateKeyTransactedA( 264 HKEY hKey, 265 LPCSTR lpSubKey, 266 DWORD Reserved, 267 LPSTR lpClass, 268 DWORD dwOptions, 269 REGSAM samDesired, 270 const LPSECURITY_ATTRIBUTES lpSecurityAttributes, 271 PHKEY phkResult, 272 LPDWORD lpdwDisposition, 273 HANDLE hTransaction, 274 PVOID pExtendedParemeter 275 ); 276 277 WINADVAPI LONG WINAPI RegCreateKeyTransactedW( 278 HKEY hKey, 279 LPCWSTR lpSubKey, 280 DWORD Reserved, 281 LPWSTR lpClass, 282 DWORD dwOptions, 283 REGSAM samDesired, 284 const LPSECURITY_ATTRIBUTES lpSecurityAttributes, 285 PHKEY phkResult, 286 LPDWORD lpdwDisposition, 287 HANDLE hTransaction, 288 PVOID pExtendedParemeter 289 ); 290 291 #define RegDeleteKeyTransacted __MINGW_NAME_AW(RegDeleteKeyTransacted) 292 WINADVAPI LONG WINAPI RegDeleteKeyTransactedA( 293 HKEY hKey, 294 LPCSTR lpSubKey, 295 REGSAM samDesired, 296 DWORD Reserved, 297 HANDLE hTransaction, 298 PVOID pExtendedParameter 299 ); 300 301 WINADVAPI LONG WINAPI RegDeleteKeyTransactedW( 302 HKEY hKey, 303 LPCWSTR lpSubKey, 304 REGSAM samDesired, 305 DWORD Reserved, 306 HANDLE hTransaction, 307 PVOID pExtendedParameter 308 ); 309 310 #define RegDeleteKeyValue __MINGW_NAME_AW(RegDeleteKeyValue) 311 WINADVAPI LONG WINAPI RegDeleteKeyValueA( 312 HKEY hKey, 313 LPCSTR lpSubKey, 314 LPCSTR lpValueName 315 ); 316 317 WINADVAPI LONG WINAPI RegDeleteKeyValueW( 318 HKEY hKey, 319 LPCWSTR lpSubKey, 320 LPCWSTR lpValueName 321 ); 322 323 #define RegDeleteTree __MINGW_NAME_AW(RegDeleteTree) 324 WINADVAPI LONG WINAPI RegDeleteTreeA( 325 HKEY hKey, 326 LPCSTR lpSubKey 327 ); 328 329 WINADVAPI LONG WINAPI RegDeleteTreeW( 330 HKEY hKey, 331 LPCWSTR lpSubKey 332 ); 333 334 WINADVAPI LONG WINAPI RegLoadAppKeyA( 335 LPCSTR lpFile, 336 PHKEY phkResult, 337 REGSAM samDesired, 338 DWORD dwOptions, 339 DWORD Reserved 340 ); 341 342 WINADVAPI LONG WINAPI RegLoadAppKeyW( 343 LPCWSTR lpFile, 344 PHKEY phkResult, 345 REGSAM samDesired, 346 DWORD dwOptions, 347 DWORD Reserved 348 ); 349 350 #define RegLoadAppKey __MINGW_NAME_AW(RegLoadAppKey) 351 352 WINADVAPI LONG WINAPI RegLoadMUIStringA(HKEY hKey, LPCSTR pszValue, LPSTR pszOutBuf, DWORD cbOutBuf, LPDWORD pcbData, DWORD Flags, LPCSTR pszDirectory); 353 WINADVAPI LONG WINAPI RegLoadMUIStringW(HKEY hKey, LPCWSTR pszValue, LPWSTR pszOutBuf, DWORD cbOutBuf, LPDWORD pcbData, DWORD Flags, LPCWSTR pszDirectory); 354 355 #define RegLoadMUIString __MINGW_NAME_AW(RegLoadMUIString) 356 357 WINADVAPI LONG WINAPI RegOpenKeyTransactedA( 358 HKEY hKey, 359 LPCSTR lpSubKey, 360 DWORD ulOptions, 361 REGSAM samDesired, 362 PHKEY phkResult, 363 HANDLE hTransaction, 364 PVOID pExtendedParameter 365 ); 366 367 WINADVAPI LONG WINAPI RegOpenKeyTransactedW( 368 HKEY hKey, 369 LPCWSTR lpSubKey, 370 DWORD ulOptions, 371 REGSAM samDesired, 372 PHKEY phkResult, 373 HANDLE hTransaction, 374 PVOID pExtendedParameter 375 ); 376 377 WINADVAPI LONG WINAPI RegRenameKey( 378 HKEY hKey, 379 LPCWSTR lpSubKeyName, 380 LPCWSTR lpNewKeyName); 381 382 #define RegOpenKeyTransacted __MINGW_NAME_AW(RegOpenKeyTransacted) 383 384 WINADVAPI LONG WINAPI RegSetKeyValueA( 385 HKEY hKey, 386 LPCSTR lpSubKey, 387 LPCSTR lpValueName, 388 DWORD dwType, 389 LPCVOID lpData, 390 DWORD cbData 391 ); 392 393 WINADVAPI LONG WINAPI RegSetKeyValueW( 394 HKEY hKey, 395 LPCWSTR lpSubKey, 396 LPCWSTR lpValueName, 397 DWORD dwType, 398 LPCVOID lpData, 399 DWORD cbData 400 ); 401 #define RegSetKeyValue __MINGW_NAME_AW(RegSetKeyValue) 402 403 #define SHUTDOWN_FORCE_OTHERS 0x00000001 404 #define SHUTDOWN_FORCE_SELF 0x00000002 405 #define SHUTDOWN_RESTART 0x00000004 406 #define SHUTDOWN_POWEROFF 0x00000008 407 #define SHUTDOWN_NOREBOOT 0x00000010 408 #define SHUTDOWN_GRACE_OVERRIDE 0x00000020 409 #define SHUTDOWN_INSTALL_UPDATES 0x00000040 410 #define SHUTDOWN_RESTARTAPPS 0x00000080 411 #define SHUTDOWN_SKIP_SVC_PRESHUTDOWN 0x00000100 412 #define SHUTDOWN_HYBRID 0x00000200 413 #define SHUTDOWN_RESTART_BOOTOPTIONS 0x00000400 414 #define SHUTDOWN_SOFT_REBOOT 0x00000800 415 #define SHUTDOWN_MOBILE_UI 0x00001000 416 #define SHUTDOWN_ARSO 0x00002000 417 418 WINADVAPI DWORD WINAPI InitiateShutdownA( 419 LPSTR lpMachineName, 420 LPSTR lpMessage, 421 DWORD dwGracePeriod, 422 DWORD dwShutdownFlags, 423 DWORD dwReason 424 ); 425 426 WINADVAPI DWORD WINAPI InitiateShutdownW( 427 LPWSTR lpMachineName, 428 LPWSTR lpMessage, 429 DWORD dwGracePeriod, 430 DWORD dwShutdownFlags, 431 DWORD dwReason 432 ); 433 434 #define InitiateShutdown __MINGW_NAME_AW(InitiateShutdown) 435 436 WINADVAPI DWORD WINAPI CheckForHiberboot( 437 PBOOLEAN pHiberboot, 438 BOOLEAN bClearFlag 439 ); 440 441 #endif /* (_WIN32_WINNT >= 0x0600) */ 442 443 #endif /* WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) */ 444 445 #ifdef __cplusplus 446 } 447 #endif 448 #endif 449