OSDN Git Service

Make <winnls.h> header effectively self-contained.
[mingw/mingw-org-wsl.git] / w32api / include / winreg.h
1 /*
2  * winreg.h
3  *
4  * Windows Registry Management API Declarations
5  *
6  *
7  * $Id$
8  *
9  * Written by Anders Norlander <anorland@hem2.passagen.se>
10  * Copyright (C) 2002, 2006, 2008, 2012, 2013, 2016, 2017, MinGW.org Project
11  *
12  *
13  * Permission is hereby granted, free of charge, to any person obtaining a
14  * copy of this software and associated documentation files (the "Software"),
15  * to deal in the Software without restriction, including without limitation
16  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
17  * and/or sell copies of the Software, and to permit persons to whom the
18  * Software is furnished to do so, subject to the following conditions:
19  *
20  * The above copyright notice and this permission notice (including the next
21  * paragraph) shall be included in all copies or substantial portions of the
22  * Software.
23  *
24  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
25  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
26  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
27  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
28  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
29  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
30  * DEALINGS IN THE SOFTWARE.
31  *
32  */
33 #ifndef _WINREG_H
34 #pragma GCC system_header
35 #define _WINREG_H
36
37 #include <winbase.h>
38 #include <reason.h>
39
40 #ifndef WINADVAPI
41 #define WINADVAPI
42 #endif
43
44 _BEGIN_C_DECLS
45
46 #define HKEY_CLASSES_ROOT               ((HKEY)(0x80000000))
47 #define HKEY_CURRENT_USER               ((HKEY)(0x80000001))
48 #define HKEY_LOCAL_MACHINE              ((HKEY)(0x80000002))
49 #define HKEY_USERS                      ((HKEY)(0x80000003))
50 #define HKEY_PERFORMANCE_DATA           ((HKEY)(0x80000004))
51 #define HKEY_CURRENT_CONFIG             ((HKEY)(0x80000005))
52 #define HKEY_DYN_DATA                   ((HKEY)(0x80000006))
53
54 #define REG_OPTION_VOLATILE                              1
55 #define REG_OPTION_NON_VOLATILE                          0
56
57 /* https://msdn.microsoft.com/en-us/library/aa965882%28v=vs.85%29.aspx */
58 #define REG_OPTION_BACKUP_RESTORE                        4
59
60 #define REG_CREATED_NEW_KEY                              1
61 #define REG_OPENED_EXISTING_KEY                          2
62
63 #define REG_NONE                                         0
64 #define REG_SZ                                           1
65 #define REG_EXPAND_SZ                                    2
66 #define REG_BINARY                                       3
67 #define REG_DWORD_LITTLE_ENDIAN                          4
68 #define REG_DWORD                                        4
69 #define REG_DWORD_BIG_ENDIAN                             5
70 #define REG_LINK                                         6
71 #define REG_MULTI_SZ                                     7
72 #define REG_RESOURCE_LIST                                8
73 #define REG_FULL_RESOURCE_DESCRIPTOR                     9
74 #define REG_RESOURCE_REQUIREMENTS_LIST                  10
75 #define REG_QWORD_LITTLE_ENDIAN                         11
76 #define REG_QWORD                                       11
77
78 #define REG_NOTIFY_CHANGE_NAME                           1
79 #define REG_NOTIFY_CHANGE_ATTRIBUTES                     2
80 #define REG_NOTIFY_CHANGE_LAST_SET                       4
81 #define REG_NOTIFY_CHANGE_SECURITY                       8
82
83 /* https://msdn.microsoft.com/en-us/library/ms724868%28v=vs.85%29.aspx */
84 #define RRF_RT_REG_NONE                         0x00000001
85 #define RRF_RT_REG_SZ                           0x00000002
86 #define RRF_RT_REG_EXPAND_SZ                    0x00000004
87 #define RRF_RT_REG_BINARY                       0x00000008
88 #define RRF_RT_REG_DWORD                        0x00000010
89 #define RRF_RT_DWORD                            0x00000018
90 #define RRF_RT_REG_MULTI_SZ                     0x00000020
91 #define RRF_RT_REG_QWORD                        0x00000040
92 #define RRF_RT_QWORD                            0x00000048
93 #define RRF_RT_ANY                              0x0000FFFF
94 #define RRF_SUBKEY_WOW6464KEY                   0x00010000
95 #define RRF_SUBKEY_WOW6432KEY                   0x00020000
96 #define RRF_NOEXPAND                            0x10000000
97 #define RRF_ZEROONFAILURE                       0x20000000
98
99 /* https://msdn.microsoft.com/en-us/library/ms724919%28v=vs.85%29.aspx */
100 #define REG_STANDARD_FORMAT                              1
101 #define REG_LATEST_FORMAT                                2
102
103 #define REG_NO_COMPRESSION                               4
104
105 #ifndef RC_INVOKED
106
107 typedef ACCESS_MASK REGSAM;
108
109 typedef struct value_entA
110 { LPSTR         ve_valuename;
111   DWORD         ve_valuelen;
112   DWORD         ve_valueptr;
113   DWORD         ve_type;
114 } VALENTA, *PVALENTA;
115
116 typedef struct value_entW
117 { LPWSTR        ve_valuename;
118   DWORD         ve_valuelen;
119   DWORD         ve_valueptr;
120   DWORD         ve_type;
121 } VALENTW, *PVALENTW;
122
123 typedef __AW_ALIAS__(VALENT), *PVALENT;
124
125 #define AbortSystemShutdown __AW_SUFFIXED__(AbortSystemShutdown)
126 WINADVAPI BOOL WINAPI AbortSystemShutdownA (LPCSTR);
127 WINADVAPI BOOL WINAPI AbortSystemShutdownW (LPCWSTR);
128
129 #define InitiateSystemShutdown __AW_SUFFIXED__(InitiateSystemShutdown)
130 WINADVAPI BOOL WINAPI InitiateSystemShutdownA (LPSTR, LPSTR, DWORD, BOOL, BOOL);
131 WINADVAPI BOOL WINAPI InitiateSystemShutdownW (LPWSTR, LPWSTR, DWORD, BOOL, BOOL);
132
133 WINADVAPI LONG WINAPI RegCloseKey (HKEY);
134
135 #define RegConnectRegistry __AW_SUFFIXED__(RegConnectRegistry)
136 WINADVAPI LONG WINAPI RegConnectRegistryA (LPCSTR, HKEY, PHKEY);
137 WINADVAPI LONG WINAPI RegConnectRegistryW (LPCWSTR, HKEY, PHKEY);
138
139 #define RegCreateKey __AW_SUFFIXED__(RegCreateKey)
140 WINADVAPI LONG WINAPI RegCreateKeyA (HKEY, LPCSTR, PHKEY);
141 WINADVAPI LONG WINAPI RegCreateKeyW (HKEY, LPCWSTR, PHKEY);
142
143 #define RegCreateKeyEx __AW_SUFFIXED__(RegCreateKeyEx)
144 WINADVAPI LONG WINAPI RegCreateKeyExA
145   ( HKEY, LPCSTR, DWORD, LPSTR, DWORD, REGSAM, LPSECURITY_ATTRIBUTES,
146     PHKEY, PDWORD
147   );
148 WINADVAPI LONG WINAPI RegCreateKeyExW
149   ( HKEY, LPCWSTR, DWORD, LPWSTR, DWORD, REGSAM, LPSECURITY_ATTRIBUTES,
150     PHKEY, PDWORD
151   );
152 #define RegDeleteKey __AW_SUFFIXED__(RegDeleteKey)
153 WINADVAPI LONG WINAPI RegDeleteKeyA (HKEY, LPCSTR);
154 WINADVAPI LONG WINAPI RegDeleteKeyW (HKEY, LPCWSTR);
155
156 #define RegDeleteValue __AW_SUFFIXED__(RegDeleteValue)
157 WINADVAPI LONG WINAPI RegDeleteValueA (HKEY, LPCSTR);
158 WINADVAPI LONG WINAPI RegDeleteValueW (HKEY, LPCWSTR);
159
160 /* https://msdn.microsoft.com/en-us/library/ms724854%28v=vs.85%29.aspx */
161 WINADVAPI LONG WINAPI RegDisablePredefinedCache (void);
162
163 #define RegEnumKey __AW_SUFFIXED__(RegEnumKey)
164 WINADVAPI LONG WINAPI RegEnumKeyA (HKEY, DWORD, LPSTR, DWORD);
165 WINADVAPI LONG WINAPI RegEnumKeyW (HKEY, DWORD, LPWSTR, DWORD);
166
167 #define RegEnumKeyEx __AW_SUFFIXED__(RegEnumKeyEx)
168 WINADVAPI LONG WINAPI RegEnumKeyExA
169   ( HKEY, DWORD, LPSTR, PDWORD, PDWORD, LPSTR, PDWORD, PFILETIME
170   );
171 WINADVAPI LONG WINAPI RegEnumKeyExW
172   ( HKEY, DWORD, LPWSTR, PDWORD, PDWORD, LPWSTR, PDWORD, PFILETIME
173   );
174 #define RegEnumValue __AW_SUFFIXED__(RegEnumValue)
175 WINADVAPI LONG WINAPI RegEnumValueA
176   ( HKEY, DWORD, LPSTR, PDWORD, PDWORD, PDWORD, LPBYTE, PDWORD
177   );
178 WINADVAPI LONG WINAPI RegEnumValueW
179   ( HKEY, DWORD, LPWSTR, PDWORD, PDWORD, PDWORD, LPBYTE, PDWORD
180   );
181 WINADVAPI LONG WINAPI RegFlushKey (HKEY);
182 WINADVAPI LONG WINAPI RegGetKeySecurity
183   ( HKEY, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR, PDWORD
184   );
185 #define RegLoadKey __AW_SUFFIXED__(RegLoadKey)
186 WINADVAPI LONG WINAPI RegLoadKeyA (HKEY, LPCSTR, LPCSTR);
187 WINADVAPI LONG WINAPI RegLoadKeyW (HKEY, LPCWSTR, LPCWSTR);
188
189 WINADVAPI LONG WINAPI RegNotifyChangeKeyValue (HKEY, BOOL, DWORD, HANDLE, BOOL);
190
191 /* https://msdn.microsoft.com/en-us/library/ms724894%28v=vs.85%29.aspx */
192 WINADVAPI LONG WINAPI RegOpenCurrentUser (REGSAM, PHKEY);
193
194 #define RegOpenKey __AW_SUFFIXED__(RegOpenKey)
195 WINADVAPI LONG WINAPI RegOpenKeyA (HKEY, LPCSTR, PHKEY);
196 WINADVAPI LONG WINAPI RegOpenKeyW (HKEY, LPCWSTR, PHKEY);
197
198 #define RegOpenKeyEx __AW_SUFFIXED__(RegOpenKeyEx)
199 WINADVAPI LONG WINAPI RegOpenKeyExA (HKEY, LPCSTR, DWORD, REGSAM, PHKEY);
200 WINADVAPI LONG WINAPI RegOpenKeyExW (HKEY, LPCWSTR, DWORD, REGSAM, PHKEY);
201
202 /* https://msdn.microsoft.com/en-us/library/ms724899%28v=vs.85%29.aspx */
203 WINADVAPI LONG WINAPI RegOpenUserClassesRoot (HANDLE, DWORD, REGSAM, PHKEY);
204
205 /* https://msdn.microsoft.com/en-us/library/ms724901%28v=vs.85%29.aspx */
206 WINADVAPI LONG WINAPI RegOverridePredefKey (HKEY, HKEY);
207
208 #define RegQueryInfoKey __AW_SUFFIXED__(RegQueryInfoKey)
209 WINADVAPI LONG WINAPI RegQueryInfoKeyA
210   ( HKEY, LPSTR, PDWORD, PDWORD, PDWORD, PDWORD, PDWORD, PDWORD, PDWORD,
211     PDWORD, PDWORD, PFILETIME
212   );
213 WINADVAPI LONG WINAPI RegQueryInfoKeyW
214   ( HKEY, LPWSTR, PDWORD, PDWORD, PDWORD, PDWORD, PDWORD, PDWORD, PDWORD,
215     PDWORD, PDWORD, PFILETIME
216   );
217 #define RegQueryMultipleValues __AW_SUFFIXED__(RegQueryMultipleValues)
218 WINADVAPI LONG WINAPI RegQueryMultipleValuesA
219   ( HKEY, PVALENTA, DWORD, LPSTR, LPDWORD
220   );
221 WINADVAPI LONG WINAPI RegQueryMultipleValuesW
222   ( HKEY, PVALENTW, DWORD, LPWSTR, LPDWORD
223   );
224 #define RegQueryValue __AW_SUFFIXED__(RegQueryValue)
225 WINADVAPI LONG WINAPI RegQueryValueA (HKEY, LPCSTR, LPSTR, PLONG);
226 WINADVAPI LONG WINAPI RegQueryValueW (HKEY, LPCWSTR, LPWSTR, PLONG);
227
228 #define RegQueryValueEx __AW_SUFFIXED__(RegQueryValueEx)
229 WINADVAPI LONG WINAPI RegQueryValueExA
230   ( HKEY, LPCSTR, LPDWORD, LPDWORD, LPBYTE, LPDWORD
231   );
232 WINADVAPI LONG WINAPI RegQueryValueExW
233   ( HKEY, LPCWSTR, LPDWORD, LPDWORD, LPBYTE, LPDWORD
234   );
235 #define RegReplaceKey __AW_SUFFIXED__(RegReplaceKey)
236 WINADVAPI LONG WINAPI RegReplaceKeyA (HKEY, LPCSTR, LPCSTR, LPCSTR);
237 WINADVAPI LONG WINAPI RegReplaceKeyW (HKEY, LPCWSTR, LPCWSTR, LPCWSTR);
238
239 #define RegRestoreKey __AW_SUFFIXED__(RegRestoreKey)
240 WINADVAPI LONG WINAPI RegRestoreKeyA (HKEY, LPCSTR, DWORD);
241 WINADVAPI LONG WINAPI RegRestoreKeyW (HKEY, LPCWSTR, DWORD);
242
243 #define RegSaveKey __AW_SUFFIXED__(RegSaveKey)
244 WINADVAPI LONG WINAPI RegSaveKeyA (HKEY, LPCSTR, LPSECURITY_ATTRIBUTES);
245 WINADVAPI LONG WINAPI RegSaveKeyW (HKEY, LPCWSTR, LPSECURITY_ATTRIBUTES);
246
247 WINADVAPI LONG WINAPI RegSetKeySecurity
248   ( HKEY, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR
249   );
250 #define RegSetValue __AW_SUFFIXED__(RegSetValue)
251 WINADVAPI LONG WINAPI RegSetValueA (HKEY, LPCSTR, DWORD, LPCSTR, DWORD);
252 WINADVAPI LONG WINAPI RegSetValueW (HKEY, LPCWSTR, DWORD, LPCWSTR, DWORD);
253
254 #define RegSetValueEx __AW_SUFFIXED__(RegSetValueEx)
255 WINADVAPI LONG WINAPI RegSetValueExA
256   ( HKEY, LPCSTR, DWORD, DWORD, const BYTE *, DWORD
257   );
258 WINADVAPI LONG WINAPI RegSetValueExW
259   ( HKEY, LPCWSTR, DWORD, DWORD, const BYTE *, DWORD
260   );
261 #define RegUnLoadKey __AW_SUFFIXED__(RegUnLoadKey)
262 WINADVAPI LONG WINAPI RegUnLoadKeyA (HKEY, LPCSTR);
263 WINADVAPI LONG WINAPI RegUnLoadKeyW (HKEY, LPCWSTR);
264
265 #if _WIN32_WINNT >= _WIN32_WINNT_WINXP
266 #define RegSaveKeyEx __AW_SUFFIXED__(RegSaveKeyEx)
267 /* https://msdn.microsoft.com/en-us/library/ms724919%28v=vs.85%29.aspx */
268 WINADVAPI LONG WINAPI RegSaveKeyExA (HKEY, LPCSTR, LPSECURITY_ATTRIBUTES, DWORD);
269 WINADVAPI LONG WINAPI RegSaveKeyExW (HKEY, LPCWSTR, LPSECURITY_ATTRIBUTES, DWORD);
270
271 #if _WIN32_WINNT >= _WIN32_WINNT_WS03
272 #define RegDeleteKeyEx __AW_SUFFIXED__(RegDeleteKeyEx)
273 WINADVAPI LONG WINAPI RegDeleteKeyExA (HKEY, LPCSTR, REGSAM, DWORD);
274 WINADVAPI LONG WINAPI RegDeleteKeyExW (HKEY, LPCWSTR, REGSAM, DWORD);
275
276 /* https://msdn.microsoft.com/en-us/library/ms724858%28v=vs.85%29.aspx */
277 WINADVAPI LONG WINAPI RegDisableReflectionKey (HKEY);
278
279 /* https://msdn.microsoft.com/en-us/library/ms724859%28v=vs.85%29.aspx */
280 WINADVAPI LONG WINAPI RegEnableReflectionKey (HKEY);
281
282 /* https://msdn.microsoft.com/en-us/library/ms724907%28v=vs.85%29.aspx */
283 WINADVAPI LONG WINAPI RegQueryReflectionKey (HKEY, BOOL *);
284
285 #if _WIN32_WINNT >= _WIN32_WINNT_VISTA
286 #define RegCopyTree __AW_SUFFIXED__(RegCopyTree)
287 /* https://msdn.microsoft.com/en-us/library/aa379768%28v=vs.85%29.aspx */
288 WINADVAPI LONG WINAPI RegCopyTreeA (HKEY, LPCSTR, HKEY);
289 WINADVAPI LONG WINAPI RegCopyTreeW (HKEY, LPCWSTR, HKEY);
290
291 #define RegCreateKeyTransacted __AW_SUFFIXED__(RegCreateKeyTransacted)
292 /* https://msdn.microsoft.com/en-us/library/aa965882%28v=vs.85%29.aspx */
293 WINADVAPI LONG WINAPI RegCreateKeyTransactedA
294   ( HKEY, LPCSTR, DWORD, LPSTR, DWORD, REGSAM, const LPSECURITY_ATTRIBUTES,
295     PHKEY, LPDWORD, HANDLE, PVOID
296   );
297 WINADVAPI LONG WINAPI RegCreateKeyTransactedW
298   ( HKEY, LPCWSTR, DWORD, LPWSTR, DWORD, REGSAM, const LPSECURITY_ATTRIBUTES,
299     PHKEY, LPDWORD, HANDLE, PVOID
300   );
301 #define RegDeleteKeyTransacted __AW_SUFFIXED__(RegDeleteKeyTransacted)
302 /* https://msdn.microsoft.com/en-us/library/aa965883%28v=vs.85%29.aspx */
303 WINADVAPI LONG WINAPI RegDeleteKeyTransactedA
304   ( HKEY, LPCSTR, REGSAM, DWORD, HANDLE, PVOID
305   );
306 WINADVAPI LONG WINAPI RegDeleteKeyTransactedW
307   ( HKEY, LPCWSTR, REGSAM, DWORD, HANDLE, PVOID
308   );
309 #define RegDeleteKeyValue __AW_SUFFIXED__(RegDeleteKeyValue)
310 /* https://msdn.microsoft.com/en-us/library/ms724848%28v=vs.85%29.aspx */
311 WINADVAPI LONG WINAPI RegDeleteKeyValueA (HKEY, LPCSTR, LPCSTR);
312 WINADVAPI LONG WINAPI RegDeleteKeyValueW (HKEY, LPCWSTR, LPCWSTR);
313
314 #define RegDeleteTree __AW_SUFFIXED__(RegDeleteTree)
315 /* https://msdn.microsoft.com/en-us/library/aa379776%28v=vs.85%29.aspx */
316 WINADVAPI LONG WINAPI RegDeleteTreeA (HKEY, LPCSTR);
317 WINADVAPI LONG WINAPI RegDeleteTreeW (HKEY, LPCWSTR);
318
319 /* https://msdn.microsoft.com/en-us/library/ms724855%28v=vs.85%29.aspx */
320 WINADVAPI LONG WINAPI RegDisablePredefinedCacheEx (void);
321
322 #define RegGetValue __AW_SUFFIXED__(RegGetValue)
323 /* https://msdn.microsoft.com/en-us/library/ms724868%28v=vs.85%29.aspx */
324 WINADVAPI LONG WINAPI RegGetValueA
325   ( HKEY, LPCSTR, LPCSTR, DWORD, LPDWORD, PVOID, LPDWORD
326   );
327 WINADVAPI LONG WINAPI RegGetValueW
328   ( HKEY, LPCWSTR, LPCWSTR, DWORD, LPDWORD, PVOID, LPDWORD
329   );
330 #define RegLoadMUIString __AW_SUFFIXED__(RegLoadMUIString)
331 /* https://msdn.microsoft.com/en-us/library/ms724890%28v=vs.85%29.aspx */
332 WINADVAPI LONG WINAPI RegLoadMUIStringA
333   ( HKEY, LPCSTR, LPSTR, DWORD, LPDWORD, DWORD, LPCSTR
334   );
335 WINADVAPI LONG WINAPI RegLoadMUIStringW
336   ( HKEY, LPCWSTR, LPWSTR, DWORD, LPDWORD, DWORD, LPCWSTR
337   );
338 #define RegOpenKeyTransacted __AW_SUFFIXED__(RegOpenKeyTransacted)
339 /* https://msdn.microsoft.com/en-us/library/aa965886%28v=vs.85%29.aspx */
340 WINADVAPI LONG WINAPI RegOpenKeyTransactedA
341   ( HKEY, LPCSTR, DWORD, REGSAM, PHKEY, HANDLE, PVOID
342   );
343 WINADVAPI LONG WINAPI RegOpenKeyTransactedW
344   ( HKEY, LPCWSTR, DWORD, REGSAM, PHKEY, HANDLE, PVOID
345   );
346 #define RegSetKeyValue __AW_SUFFIXED__(RegSetKeyValue)
347 /* https://msdn.microsoft.com/en-us/library/ms724921%28v=vs.85%29.aspx */
348 WINADVAPI LONG WINAPI RegSetKeyValueA
349   ( HKEY, LPCSTR, LPCSTR, DWORD, LPCVOID, DWORD
350   );
351 WINADVAPI LONG WINAPI RegSetKeyValueW
352   ( HKEY, LPCWSTR, LPCWSTR, DWORD, LPCVOID, DWORD
353   );
354 #endif  /* _WIN32_WINNT >= _WIN32_WINNT_VISTA */
355 #endif  /* _WIN32_WINNT >= _WIN32_WINNT_WS03 */
356 #endif  /* _WIN32_WINNT >= _WIN32_WINNT_WINXP */
357
358 #endif  /* ! RC_INVOKED */
359
360 _END_C_DECLS
361
362 #endif  /* !_WINREG_H: $RCSfile$: end of file */