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