master
  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
 13extern "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 RegDeleteKey __MINGW_NAME_AW(RegDeleteKey)
135#define RegEnumKey __MINGW_NAME_AW(RegEnumKey)
136#define RegLoadKey __MINGW_NAME_AW(RegLoadKey)
137#define RegOpenKey __MINGW_NAME_AW(RegOpenKey)
138#define RegQueryValue __MINGW_NAME_AW(RegQueryValue)
139#define RegQueryMultipleValues __MINGW_NAME_AW(RegQueryMultipleValues)
140#define RegReplaceKey __MINGW_NAME_AW(RegReplaceKey)
141#define RegRestoreKey __MINGW_NAME_AW(RegRestoreKey)
142#define RegSaveKey __MINGW_NAME_AW(RegSaveKey)
143#define RegSetValue __MINGW_NAME_AW(RegSetValue)
144#define RegUnLoadKey __MINGW_NAME_AW(RegUnLoadKey)
145#define InitiateSystemShutdown __MINGW_NAME_AW(InitiateSystemShutdown)
146#define AbortSystemShutdown __MINGW_NAME_AW(AbortSystemShutdown)
147
148  WINADVAPI LONG WINAPI RegOverridePredefKey(HKEY hKey,HKEY hNewHKey);
149  WINADVAPI LONG WINAPI RegOpenUserClassesRoot(HANDLE hToken,DWORD dwOptions,REGSAM samDesired,PHKEY phkResult);
150  WINADVAPI LONG WINAPI RegOpenCurrentUser(REGSAM samDesired,PHKEY phkResult);
151  WINADVAPI LONG WINAPI RegDisablePredefinedCache(void);
152  WINADVAPI LONG WINAPI RegDisablePredefinedCacheEx(void);
153  WINADVAPI LONG WINAPI RegConnectRegistryA(LPCSTR lpMachineName,HKEY hKey,PHKEY phkResult);
154  WINADVAPI LONG WINAPI RegConnectRegistryW(LPCWSTR lpMachineName,HKEY hKey,PHKEY phkResult);
155  WINADVAPI LONG WINAPI RegConnectRegistryExA(LPCSTR lpMachineName,HKEY hKey,ULONG Flags,PHKEY phkResult);
156  WINADVAPI LONG WINAPI RegConnectRegistryExW(LPCWSTR lpMachineName,HKEY hKey,ULONG Flags,PHKEY phkResult);
157  WINADVAPI LONG WINAPI RegCreateKeyA(HKEY hKey,LPCSTR lpSubKey,PHKEY phkResult);
158  WINADVAPI LONG WINAPI RegCreateKeyW(HKEY hKey,LPCWSTR lpSubKey,PHKEY phkResult);
159  WINADVAPI LONG WINAPI RegDeleteKeyA(HKEY hKey,LPCSTR lpSubKey);
160  WINADVAPI LONG WINAPI RegDeleteKeyW(HKEY hKey,LPCWSTR lpSubKey);
161  WINADVAPI LONG WINAPI RegDisableReflectionKey(HKEY hBase);
162  WINADVAPI LONG WINAPI RegEnableReflectionKey(HKEY hBase);
163  WINADVAPI LONG WINAPI RegQueryReflectionKey(HKEY hBase,WINBOOL *bIsReflectionDisabled);
164  WINADVAPI LONG WINAPI RegEnumKeyA(HKEY hKey,DWORD dwIndex,LPSTR lpName,DWORD cchName);
165  WINADVAPI LONG WINAPI RegEnumKeyW(HKEY hKey,DWORD dwIndex,LPWSTR lpName,DWORD cchName);
166  WINADVAPI LONG WINAPI RegFlushKey(HKEY hKey);
167  WINADVAPI LONG WINAPI RegGetKeySecurity(HKEY hKey,SECURITY_INFORMATION SecurityInformation,PSECURITY_DESCRIPTOR pSecurityDescriptor,LPDWORD lpcbSecurityDescriptor);
168  WINADVAPI LONG WINAPI RegLoadKeyA(HKEY hKey,LPCSTR lpSubKey,LPCSTR lpFile);
169  WINADVAPI LONG WINAPI RegLoadKeyW(HKEY hKey,LPCWSTR lpSubKey,LPCWSTR lpFile);
170  WINADVAPI LONG WINAPI RegOpenKeyA(HKEY hKey,LPCSTR lpSubKey,PHKEY phkResult);
171  WINADVAPI LONG WINAPI RegOpenKeyW(HKEY hKey,LPCWSTR lpSubKey,PHKEY phkResult);
172  WINADVAPI LONG WINAPI RegQueryValueA(HKEY hKey,LPCSTR lpSubKey,LPSTR lpData,PLONG lpcbData);
173  WINADVAPI LONG WINAPI RegQueryValueW(HKEY hKey,LPCWSTR lpSubKey,LPWSTR lpData,PLONG lpcbData);
174  WINADVAPI LONG WINAPI RegQueryMultipleValuesA(HKEY hKey,PVALENTA val_list,DWORD num_vals,LPSTR lpValueBuf,LPDWORD ldwTotsize);
175  WINADVAPI LONG WINAPI RegQueryMultipleValuesW(HKEY hKey,PVALENTW val_list,DWORD num_vals,LPWSTR lpValueBuf,LPDWORD ldwTotsize);
176  WINADVAPI LONG WINAPI RegReplaceKeyA(HKEY hKey,LPCSTR lpSubKey,LPCSTR lpNewFile,LPCSTR lpOldFile);
177  WINADVAPI LONG WINAPI RegReplaceKeyW(HKEY hKey,LPCWSTR lpSubKey,LPCWSTR lpNewFile,LPCWSTR lpOldFile);
178  WINADVAPI LONG WINAPI RegRestoreKeyA(HKEY hKey,LPCSTR lpFile,DWORD dwFlags);
179  WINADVAPI LONG WINAPI RegRestoreKeyW(HKEY hKey,LPCWSTR lpFile,DWORD dwFlags);
180  WINADVAPI LONG WINAPI RegSaveKeyA(HKEY hKey,LPCSTR lpFile,LPSECURITY_ATTRIBUTES lpSecurityAttributes);
181  WINADVAPI LONG WINAPI RegSaveKeyW(HKEY hKey,LPCWSTR lpFile,LPSECURITY_ATTRIBUTES lpSecurityAttributes);
182  WINADVAPI LONG WINAPI RegSetKeySecurity(HKEY hKey,SECURITY_INFORMATION SecurityInformation,PSECURITY_DESCRIPTOR pSecurityDescriptor);
183  WINADVAPI LONG WINAPI RegSetValueA(HKEY hKey,LPCSTR lpSubKey,DWORD dwType,LPCSTR lpData,DWORD cbData);
184  WINADVAPI LONG WINAPI RegSetValueW(HKEY hKey,LPCWSTR lpSubKey,DWORD dwType,LPCWSTR lpData,DWORD cbData);
185  WINADVAPI LONG WINAPI RegUnLoadKeyA(HKEY hKey,LPCSTR lpSubKey);
186  WINADVAPI LONG WINAPI RegUnLoadKeyW(HKEY hKey,LPCWSTR lpSubKey);
187  WINADVAPI WINBOOL WINAPI InitiateSystemShutdownA(LPSTR lpMachineName,LPSTR lpMessage,DWORD dwTimeout,WINBOOL bForceAppsClosed,WINBOOL bRebootAfterShutdown);
188  WINADVAPI WINBOOL WINAPI InitiateSystemShutdownW(LPWSTR lpMachineName,LPWSTR lpMessage,DWORD dwTimeout,WINBOOL bForceAppsClosed,WINBOOL bRebootAfterShutdown);
189  WINADVAPI WINBOOL WINAPI AbortSystemShutdownA(LPSTR lpMachineName);
190  WINADVAPI WINBOOL WINAPI AbortSystemShutdownW(LPWSTR lpMachineName);
191
192#include <reason.h>
193
194#define REASON_SWINSTALL SHTDN_REASON_MAJOR_SOFTWARE|SHTDN_REASON_MINOR_INSTALLATION
195#define REASON_HWINSTALL SHTDN_REASON_MAJOR_HARDWARE|SHTDN_REASON_MINOR_INSTALLATION
196#define REASON_SERVICEHANG SHTDN_REASON_MAJOR_SOFTWARE|SHTDN_REASON_MINOR_HUNG
197#define REASON_UNSTABLE SHTDN_REASON_MAJOR_SYSTEM|SHTDN_REASON_MINOR_UNSTABLE
198#define REASON_SWHWRECONF SHTDN_REASON_MAJOR_SOFTWARE|SHTDN_REASON_MINOR_RECONFIG
199#define REASON_OTHER SHTDN_REASON_MAJOR_OTHER|SHTDN_REASON_MINOR_OTHER
200#define REASON_UNKNOWN SHTDN_REASON_UNKNOWN
201#define REASON_LEGACY_API SHTDN_REASON_LEGACY_API
202#define REASON_PLANNED_FLAG SHTDN_REASON_FLAG_PLANNED
203
204#define MAX_SHUTDOWN_TIMEOUT (10*365*24*60*60)
205
206#define InitiateSystemShutdownEx __MINGW_NAME_AW(InitiateSystemShutdownEx)
207#define RegSaveKeyEx __MINGW_NAME_AW(RegSaveKeyEx)
208
209  WINADVAPI WINBOOL WINAPI InitiateSystemShutdownExA(LPSTR lpMachineName,LPSTR lpMessage,DWORD dwTimeout,WINBOOL bForceAppsClosed,WINBOOL bRebootAfterShutdown,DWORD dwReason);
210  WINADVAPI WINBOOL WINAPI InitiateSystemShutdownExW(LPWSTR lpMachineName,LPWSTR lpMessage,DWORD dwTimeout,WINBOOL bForceAppsClosed,WINBOOL bRebootAfterShutdown,DWORD dwReason);
211  WINADVAPI LONG WINAPI RegSaveKeyExA(HKEY hKey,LPCSTR lpFile,LPSECURITY_ATTRIBUTES lpSecurityAttributes,DWORD Flags);
212  WINADVAPI LONG WINAPI RegSaveKeyExW(HKEY hKey,LPCWSTR lpFile,LPSECURITY_ATTRIBUTES lpSecurityAttributes,DWORD Flags);
213  WINADVAPI LONG WINAPI Wow64Win32ApiEntry (DWORD dwFuncNumber,DWORD dwFlag,DWORD dwRes);
214
215#if (_WIN32_WINNT >= 0x0600)
216
217#define RegCopyTree __MINGW_NAME_AW(RegCopyTree)
218WINADVAPI LONG WINAPI RegCopyTreeA(
219  HKEY hKeySrc,
220  LPCSTR lpSubKey,
221  HKEY hKeyDest
222);
223
224WINADVAPI LONG WINAPI RegCopyTreeW(
225  HKEY hKeySrc,
226  LPCWSTR lpSubKey,
227  HKEY hKeyDest
228);
229
230#define RegCreateKeyTransacted __MINGW_NAME_AW(RegCreateKeyTransacted)
231WINADVAPI LONG WINAPI RegCreateKeyTransactedA(
232  HKEY hKey,
233  LPCSTR lpSubKey,
234  DWORD Reserved,
235  LPSTR lpClass,
236  DWORD dwOptions,
237  REGSAM samDesired,
238  const LPSECURITY_ATTRIBUTES lpSecurityAttributes,
239  PHKEY phkResult,
240  LPDWORD lpdwDisposition,
241  HANDLE hTransaction,
242  PVOID pExtendedParemeter
243);
244
245WINADVAPI LONG WINAPI RegCreateKeyTransactedW(
246  HKEY hKey,
247  LPCWSTR lpSubKey,
248  DWORD Reserved,
249  LPWSTR lpClass,
250  DWORD dwOptions,
251  REGSAM samDesired,
252  const LPSECURITY_ATTRIBUTES lpSecurityAttributes,
253  PHKEY phkResult,
254  LPDWORD lpdwDisposition,
255  HANDLE hTransaction,
256  PVOID pExtendedParemeter
257);
258
259#define RegDeleteKeyTransacted __MINGW_NAME_AW(RegDeleteKeyTransacted)
260WINADVAPI LONG WINAPI RegDeleteKeyTransactedA(
261  HKEY hKey,
262  LPCSTR lpSubKey,
263  REGSAM samDesired,
264  DWORD Reserved,
265  HANDLE hTransaction,
266  PVOID pExtendedParameter
267);
268
269WINADVAPI LONG WINAPI RegDeleteKeyTransactedW(
270  HKEY hKey,
271  LPCWSTR lpSubKey,
272  REGSAM samDesired,
273  DWORD Reserved,
274  HANDLE hTransaction,
275  PVOID pExtendedParameter
276);
277
278#define RegDeleteKeyValue __MINGW_NAME_AW(RegDeleteKeyValue)
279WINADVAPI LONG WINAPI RegDeleteKeyValueA(
280  HKEY hKey,
281  LPCSTR lpSubKey,
282  LPCSTR lpValueName
283);
284
285WINADVAPI LONG WINAPI RegDeleteKeyValueW(
286  HKEY hKey,
287  LPCWSTR lpSubKey,
288  LPCWSTR lpValueName
289);
290
291WINADVAPI LONG WINAPI RegLoadAppKeyA(
292  LPCSTR lpFile,
293  PHKEY phkResult,
294  REGSAM samDesired,
295  DWORD dwOptions,
296  DWORD Reserved
297);
298
299WINADVAPI LONG WINAPI RegLoadAppKeyW(
300  LPCWSTR lpFile,
301  PHKEY phkResult,
302  REGSAM samDesired,
303  DWORD dwOptions,
304  DWORD Reserved
305);
306
307#define RegLoadAppKey __MINGW_NAME_AW(RegLoadAppKey)
308
309WINADVAPI LONG WINAPI RegLoadMUIStringA(HKEY hKey, LPCSTR pszValue, LPSTR pszOutBuf, DWORD cbOutBuf, LPDWORD pcbData, DWORD Flags, LPCSTR pszDirectory);
310WINADVAPI LONG WINAPI RegLoadMUIStringW(HKEY hKey, LPCWSTR pszValue, LPWSTR pszOutBuf, DWORD cbOutBuf, LPDWORD pcbData, DWORD Flags, LPCWSTR pszDirectory);
311
312#define RegLoadMUIString __MINGW_NAME_AW(RegLoadMUIString)
313
314WINADVAPI LONG WINAPI RegOpenKeyTransactedA(
315  HKEY hKey,
316  LPCSTR lpSubKey,
317  DWORD ulOptions,
318  REGSAM samDesired,
319  PHKEY phkResult,
320  HANDLE hTransaction,
321  PVOID pExtendedParameter
322);
323
324WINADVAPI LONG WINAPI RegOpenKeyTransactedW(
325  HKEY hKey,
326  LPCWSTR lpSubKey,
327  DWORD ulOptions,
328  REGSAM samDesired,
329  PHKEY phkResult,
330  HANDLE hTransaction,
331  PVOID pExtendedParameter
332);
333
334WINADVAPI LONG WINAPI RegRenameKey(
335  HKEY hKey,
336  LPCWSTR lpSubKeyName,
337  LPCWSTR lpNewKeyName);
338
339#define RegOpenKeyTransacted __MINGW_NAME_AW(RegOpenKeyTransacted)
340
341WINADVAPI LONG WINAPI RegSetKeyValueA(
342  HKEY hKey,
343  LPCSTR lpSubKey,
344  LPCSTR lpValueName,
345  DWORD dwType,
346  LPCVOID lpData,
347  DWORD cbData
348);
349
350WINADVAPI LONG WINAPI RegSetKeyValueW(
351  HKEY hKey,
352  LPCWSTR lpSubKey,
353  LPCWSTR lpValueName,
354  DWORD dwType,
355  LPCVOID lpData,
356  DWORD cbData
357);
358#define RegSetKeyValue __MINGW_NAME_AW(RegSetKeyValue)
359
360#define SHUTDOWN_FORCE_OTHERS 0x00000001
361#define SHUTDOWN_FORCE_SELF 0x00000002
362#define SHUTDOWN_RESTART 0x00000004
363#define SHUTDOWN_POWEROFF 0x00000008
364#define SHUTDOWN_NOREBOOT 0x00000010
365#define SHUTDOWN_GRACE_OVERRIDE 0x00000020
366#define SHUTDOWN_INSTALL_UPDATES 0x00000040
367#define SHUTDOWN_RESTARTAPPS 0x00000080
368#define SHUTDOWN_SKIP_SVC_PRESHUTDOWN 0x00000100
369#define SHUTDOWN_HYBRID 0x00000200
370#define SHUTDOWN_RESTART_BOOTOPTIONS 0x00000400
371#define SHUTDOWN_SOFT_REBOOT 0x00000800
372#define SHUTDOWN_MOBILE_UI 0x00001000
373#define SHUTDOWN_ARSO 0x00002000
374
375WINADVAPI DWORD WINAPI InitiateShutdownA(
376  LPSTR lpMachineName,
377  LPSTR lpMessage,
378  DWORD dwGracePeriod,
379  DWORD dwShutdownFlags,
380  DWORD dwReason
381);
382
383WINADVAPI DWORD WINAPI InitiateShutdownW(
384  LPWSTR lpMachineName,
385  LPWSTR lpMessage,
386  DWORD dwGracePeriod,
387  DWORD dwShutdownFlags,
388  DWORD dwReason
389);
390
391#define InitiateShutdown __MINGW_NAME_AW(InitiateShutdown)
392
393WINADVAPI DWORD WINAPI CheckForHiberboot(
394  PBOOLEAN pHiberboot,
395  BOOLEAN bClearFlag
396);
397
398#endif /* (_WIN32_WINNT >= 0x0600) */
399
400#endif /* WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) */
401
402#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) || NTDDI_VERSION >= NTDDI_WIN10_19H1
403  WINADVAPI LONG WINAPI RegCloseKey(HKEY hKey);
404  WINADVAPI LONG WINAPI RegCreateKeyExA(HKEY hKey,LPCSTR lpSubKey,DWORD Reserved,LPSTR lpClass,DWORD dwOptions,REGSAM samDesired,LPSECURITY_ATTRIBUTES lpSecurityAttributes,PHKEY phkResult,LPDWORD lpdwDisposition);
405  WINADVAPI LONG WINAPI RegCreateKeyExW(HKEY hKey,LPCWSTR lpSubKey,DWORD Reserved,LPWSTR lpClass,DWORD dwOptions,REGSAM samDesired,LPSECURITY_ATTRIBUTES lpSecurityAttributes,PHKEY phkResult,LPDWORD lpdwDisposition);
406  WINADVAPI LONG WINAPI RegDeleteKeyExA(HKEY hKey,LPCSTR lpSubKey,REGSAM samDesired,DWORD Reserved);
407  WINADVAPI LONG WINAPI RegDeleteKeyExW(HKEY hKey,LPCWSTR lpSubKey,REGSAM samDesired,DWORD Reserved);
408  WINADVAPI LONG WINAPI RegDeleteValueA(HKEY hKey,LPCSTR lpValueName);
409  WINADVAPI LONG WINAPI RegDeleteValueW(HKEY hKey,LPCWSTR lpValueName);
410  WINADVAPI LONG WINAPI RegEnumKeyExA(HKEY hKey,DWORD dwIndex,LPSTR lpName,LPDWORD lpcchName,LPDWORD lpReserved,LPSTR lpClass,LPDWORD lpcchClass,PFILETIME lpftLastWriteTime);
411  WINADVAPI LONG WINAPI RegEnumKeyExW(HKEY hKey,DWORD dwIndex,LPWSTR lpName,LPDWORD lpcchName,LPDWORD lpReserved,LPWSTR lpClass,LPDWORD lpcchClass,PFILETIME lpftLastWriteTime);
412  WINADVAPI LONG WINAPI RegEnumValueA(HKEY hKey,DWORD dwIndex,LPSTR lpValueName,LPDWORD lpcchValueName,LPDWORD lpReserved,LPDWORD lpType,LPBYTE lpData,LPDWORD lpcbData);
413  WINADVAPI LONG WINAPI RegEnumValueW(HKEY hKey,DWORD dwIndex,LPWSTR lpValueName,LPDWORD lpcchValueName,LPDWORD lpReserved,LPDWORD lpType,LPBYTE lpData,LPDWORD lpcbData);
414  WINADVAPI LONG WINAPI RegGetValueA(HKEY hkey,LPCSTR lpSubKey,LPCSTR lpValue,DWORD dwFlags,LPDWORD pdwType,PVOID pvData,LPDWORD pcbData);
415  WINADVAPI LONG WINAPI RegGetValueW(HKEY hkey,LPCWSTR lpSubKey,LPCWSTR lpValue,DWORD dwFlags,LPDWORD pdwType,PVOID pvData,LPDWORD pcbData);
416  WINADVAPI LONG WINAPI RegNotifyChangeKeyValue(HKEY hKey,WINBOOL bWatchSubtree,DWORD dwNotifyFilter,HANDLE hEvent,WINBOOL fAsynchronous);
417  WINADVAPI LONG WINAPI RegOpenKeyExA(HKEY hKey,LPCSTR lpSubKey,DWORD ulOptions,REGSAM samDesired,PHKEY phkResult);
418  WINADVAPI LONG WINAPI RegOpenKeyExW(HKEY hKey,LPCWSTR lpSubKey,DWORD ulOptions,REGSAM samDesired,PHKEY phkResult);
419  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);
420  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);
421  WINADVAPI LONG WINAPI RegQueryValueExA(HKEY hKey,LPCSTR lpValueName,LPDWORD lpReserved,LPDWORD lpType,LPBYTE lpData,LPDWORD lpcbData);
422  WINADVAPI LONG WINAPI RegQueryValueExW(HKEY hKey,LPCWSTR lpValueName,LPDWORD lpReserved,LPDWORD lpType,LPBYTE lpData,LPDWORD lpcbData);
423  WINADVAPI LONG WINAPI RegSetValueExA(HKEY hKey,LPCSTR lpValueName,DWORD Reserved,DWORD dwType,CONST BYTE *lpData,DWORD cbData);
424  WINADVAPI LONG WINAPI RegSetValueExW(HKEY hKey,LPCWSTR lpValueName,DWORD Reserved,DWORD dwType,CONST BYTE *lpData,DWORD cbData);
425#define RegCreateKeyEx __MINGW_NAME_AW(RegCreateKeyEx)
426#define RegDeleteKeyEx __MINGW_NAME_AW(RegDeleteKeyEx)
427#define RegDeleteValue __MINGW_NAME_AW(RegDeleteValue)
428#define RegEnumKeyEx __MINGW_NAME_AW(RegEnumKeyEx)
429#define RegEnumValue __MINGW_NAME_AW(RegEnumValue)
430#define RegGetValue __MINGW_NAME_AW(RegGetValue)
431#define RegOpenKeyEx __MINGW_NAME_AW(RegOpenKeyEx)
432#define RegQueryInfoKey __MINGW_NAME_AW(RegQueryInfoKey)
433#define RegQueryValueEx __MINGW_NAME_AW(RegQueryValueEx)
434#define RegSetValueEx __MINGW_NAME_AW(RegSetValueEx)
435#endif
436
437#if _WIN32_WINNT >= 0x0600 && (WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) || NTDDI_VERSION >= NTDDI_WIN10_19H1)
438WINADVAPI LONG WINAPI RegDeleteTreeA(HKEY hKey,LPCSTR lpSubKey);
439WINADVAPI LONG WINAPI RegDeleteTreeW(HKEY hKey,LPCWSTR lpSubKey);
440#define RegDeleteTree __MINGW_NAME_AW(RegDeleteTree)
441#endif
442
443#ifdef __cplusplus
444}
445#endif
446#endif