configure: use relative paths for in-tree build
[tinycc.git] / win32 / include / winapi / winreg.h
blob50e5ff39897f99cf68fd1d898e222d0b051e8f92
1 /**
2 * This file has no copyright assigned and is placed in the Public Domain.
3 * This file is part of the w64 mingw-runtime package.
4 * No warranty is given; refer to the file DISCLAIMER within this package.
5 */
6 #ifndef _WINREG_
7 #define _WINREG_
9 #ifdef __cplusplus
10 extern "C" {
11 #endif
13 #ifndef WINVER
14 #define WINVER 0x0502
15 #endif
17 #define RRF_RT_REG_NONE 0x00000001
18 #define RRF_RT_REG_SZ 0x00000002
19 #define RRF_RT_REG_EXPAND_SZ 0x00000004
20 #define RRF_RT_REG_BINARY 0x00000008
21 #define RRF_RT_REG_DWORD 0x00000010
22 #define RRF_RT_REG_MULTI_SZ 0x00000020
23 #define RRF_RT_REG_QWORD 0x00000040
25 #define RRF_RT_DWORD (RRF_RT_REG_BINARY | RRF_RT_REG_DWORD)
26 #define RRF_RT_QWORD (RRF_RT_REG_BINARY | RRF_RT_REG_QWORD)
27 #define RRF_RT_ANY 0x0000ffff
29 #define RRF_NOEXPAND 0x10000000
30 #define RRF_ZEROONFAILURE 0x20000000
32 typedef ACCESS_MASK REGSAM;
34 #define HKEY_CLASSES_ROOT ((HKEY) (ULONG_PTR)((LONG)0x80000000))
35 #define HKEY_CURRENT_USER ((HKEY) (ULONG_PTR)((LONG)0x80000001))
36 #define HKEY_LOCAL_MACHINE ((HKEY) (ULONG_PTR)((LONG)0x80000002))
37 #define HKEY_USERS ((HKEY) (ULONG_PTR)((LONG)0x80000003))
38 #define HKEY_PERFORMANCE_DATA ((HKEY) (ULONG_PTR)((LONG)0x80000004))
39 #define HKEY_PERFORMANCE_TEXT ((HKEY) (ULONG_PTR)((LONG)0x80000050))
40 #define HKEY_PERFORMANCE_NLSTEXT ((HKEY) (ULONG_PTR)((LONG)0x80000060))
41 #define HKEY_CURRENT_CONFIG ((HKEY) (ULONG_PTR)((LONG)0x80000005))
42 #define HKEY_DYN_DATA ((HKEY) (ULONG_PTR)((LONG)0x80000006))
44 #define REG_SECURE_CONNECTION 1
46 #ifndef _PROVIDER_STRUCTS_DEFINED
47 #define _PROVIDER_STRUCTS_DEFINED
49 #define PROVIDER_KEEPS_VALUE_LENGTH 0x1
50 struct val_context {
51 int valuelen;
52 LPVOID value_context;
53 LPVOID val_buff_ptr;
56 typedef struct val_context *PVALCONTEXT;
58 typedef struct pvalueA {
59 LPSTR pv_valuename;
60 int pv_valuelen;
61 LPVOID pv_value_context;
62 DWORD pv_type;
63 }PVALUEA,*PPVALUEA;
65 typedef struct pvalueW {
66 LPWSTR pv_valuename;
67 int pv_valuelen;
68 LPVOID pv_value_context;
69 DWORD pv_type;
70 }PVALUEW,*PPVALUEW;
72 #ifdef UNICODE
73 typedef PVALUEW PVALUE;
74 typedef PPVALUEW PPVALUE;
75 #else
76 typedef PVALUEA PVALUE;
77 typedef PPVALUEA PPVALUE;
78 #endif
80 typedef DWORD __cdecl QUERYHANDLER(LPVOID keycontext,PVALCONTEXT val_list,DWORD num_vals,LPVOID outputbuffer,DWORD *total_outlen,DWORD input_blen);
82 typedef QUERYHANDLER *PQUERYHANDLER;
84 typedef struct provider_info {
85 PQUERYHANDLER pi_R0_1val;
86 PQUERYHANDLER pi_R0_allvals;
87 PQUERYHANDLER pi_R3_1val;
88 PQUERYHANDLER pi_R3_allvals;
89 DWORD pi_flags;
90 LPVOID pi_key_context;
91 } REG_PROVIDER;
93 typedef struct provider_info *PPROVIDER;
95 typedef struct value_entA {
96 LPSTR ve_valuename;
97 DWORD ve_valuelen;
98 DWORD_PTR ve_valueptr;
99 DWORD ve_type;
100 } VALENTA,*PVALENTA;
102 typedef struct value_entW {
103 LPWSTR ve_valuename;
104 DWORD ve_valuelen;
105 DWORD_PTR ve_valueptr;
106 DWORD ve_type;
107 } VALENTW,*PVALENTW;
109 #ifdef UNICODE
110 typedef VALENTW VALENT;
111 typedef PVALENTW PVALENT;
112 #else
113 typedef VALENTA VALENT;
114 typedef PVALENTA PVALENT;
115 #endif
116 #endif
118 #define WIN31_CLASS NULL
120 #ifdef UNICODE
121 #define RegConnectRegistry RegConnectRegistryW
122 #define RegConnectRegistryEx RegConnectRegistryExW
123 #define RegCreateKey RegCreateKeyW
124 #define RegCreateKeyEx RegCreateKeyExW
125 #define RegDeleteKey RegDeleteKeyW
126 #define RegDeleteKeyEx RegDeleteKeyExW
127 #define RegDeleteValue RegDeleteValueW
128 #define RegEnumKey RegEnumKeyW
129 #define RegEnumKeyEx RegEnumKeyExW
130 #define RegEnumValue RegEnumValueW
131 #define RegLoadKey RegLoadKeyW
132 #define RegOpenKey RegOpenKeyW
133 #define RegOpenKeyEx RegOpenKeyExW
134 #define RegQueryInfoKey RegQueryInfoKeyW
135 #define RegQueryValue RegQueryValueW
136 #define RegQueryMultipleValues RegQueryMultipleValuesW
137 #define RegQueryValueEx RegQueryValueExW
138 #define RegReplaceKey RegReplaceKeyW
139 #define RegRestoreKey RegRestoreKeyW
140 #define RegSaveKey RegSaveKeyW
141 #define RegSetValue RegSetValueW
142 #define RegSetValueEx RegSetValueExW
143 #define RegUnLoadKey RegUnLoadKeyW
144 #define RegGetValue RegGetValueW
145 #define InitiateSystemShutdown InitiateSystemShutdownW
146 #define AbortSystemShutdown AbortSystemShutdownW
147 #else
148 #define RegConnectRegistry RegConnectRegistryA
149 #define RegConnectRegistryEx RegConnectRegistryExA
150 #define RegCreateKey RegCreateKeyA
151 #define RegCreateKeyEx RegCreateKeyExA
152 #define RegDeleteKey RegDeleteKeyA
153 #define RegDeleteKeyEx RegDeleteKeyExA
154 #define RegDeleteValue RegDeleteValueA
155 #define RegEnumKey RegEnumKeyA
156 #define RegEnumKeyEx RegEnumKeyExA
157 #define RegEnumValue RegEnumValueA
158 #define RegLoadKey RegLoadKeyA
159 #define RegOpenKey RegOpenKeyA
160 #define RegOpenKeyEx RegOpenKeyExA
161 #define RegQueryInfoKey RegQueryInfoKeyA
162 #define RegQueryValue RegQueryValueA
163 #define RegQueryMultipleValues RegQueryMultipleValuesA
164 #define RegQueryValueEx RegQueryValueExA
165 #define RegReplaceKey RegReplaceKeyA
166 #define RegRestoreKey RegRestoreKeyA
167 #define RegSaveKey RegSaveKeyA
168 #define RegSetValue RegSetValueA
169 #define RegSetValueEx RegSetValueExA
170 #define RegUnLoadKey RegUnLoadKeyA
171 #define RegGetValue RegGetValueA
172 #define InitiateSystemShutdown InitiateSystemShutdownA
173 #define AbortSystemShutdown AbortSystemShutdownA
174 #endif
176 WINADVAPI LONG WINAPI RegCloseKey(HKEY hKey);
177 WINADVAPI LONG WINAPI RegOverridePredefKey(HKEY hKey,HKEY hNewHKey);
178 WINADVAPI LONG WINAPI RegOpenUserClassesRoot(HANDLE hToken,DWORD dwOptions,REGSAM samDesired,PHKEY phkResult);
179 WINADVAPI LONG WINAPI RegOpenCurrentUser(REGSAM samDesired,PHKEY phkResult);
180 WINADVAPI LONG WINAPI RegDisablePredefinedCache();
181 WINADVAPI LONG WINAPI RegConnectRegistryA(LPCSTR lpMachineName,HKEY hKey,PHKEY phkResult);
182 WINADVAPI LONG WINAPI RegConnectRegistryW(LPCWSTR lpMachineName,HKEY hKey,PHKEY phkResult);
183 WINADVAPI LONG WINAPI RegConnectRegistryExA(LPCSTR lpMachineName,HKEY hKey,ULONG Flags,PHKEY phkResult);
184 WINADVAPI LONG WINAPI RegConnectRegistryExW(LPCWSTR lpMachineName,HKEY hKey,ULONG Flags,PHKEY phkResult);
185 WINADVAPI LONG WINAPI RegCreateKeyA(HKEY hKey,LPCSTR lpSubKey,PHKEY phkResult);
186 WINADVAPI LONG WINAPI RegCreateKeyW(HKEY hKey,LPCWSTR lpSubKey,PHKEY phkResult);
187 WINADVAPI LONG WINAPI RegCreateKeyExA(HKEY hKey,LPCSTR lpSubKey,DWORD Reserved,LPSTR lpClass,DWORD dwOptions,REGSAM samDesired,LPSECURITY_ATTRIBUTES lpSecurityAttributes,PHKEY phkResult,LPDWORD lpdwDisposition);
188 WINADVAPI LONG WINAPI RegCreateKeyExW(HKEY hKey,LPCWSTR lpSubKey,DWORD Reserved,LPWSTR lpClass,DWORD dwOptions,REGSAM samDesired,LPSECURITY_ATTRIBUTES lpSecurityAttributes,PHKEY phkResult,LPDWORD lpdwDisposition);
189 WINADVAPI LONG WINAPI RegDeleteKeyA(HKEY hKey,LPCSTR lpSubKey);
190 WINADVAPI LONG WINAPI RegDeleteKeyW(HKEY hKey,LPCWSTR lpSubKey);
191 WINADVAPI LONG WINAPI RegDeleteKeyExA(HKEY hKey,LPCSTR lpSubKey,REGSAM samDesired,DWORD Reserved);
192 WINADVAPI LONG WINAPI RegDeleteKeyExW(HKEY hKey,LPCWSTR lpSubKey,REGSAM samDesired,DWORD Reserved);
193 WINADVAPI LONG WINAPI RegDisableReflectionKey(HKEY hBase);
194 WINADVAPI LONG WINAPI RegEnableReflectionKey(HKEY hBase);
195 WINADVAPI LONG WINAPI RegQueryReflectionKey(HKEY hBase,WINBOOL *bIsReflectionDisabled);
196 WINADVAPI LONG WINAPI RegDeleteValueA(HKEY hKey,LPCSTR lpValueName);
197 WINADVAPI LONG WINAPI RegDeleteValueW(HKEY hKey,LPCWSTR lpValueName);
198 WINADVAPI LONG WINAPI RegEnumKeyA(HKEY hKey,DWORD dwIndex,LPSTR lpName,DWORD cchName);
199 WINADVAPI LONG WINAPI RegEnumKeyW(HKEY hKey,DWORD dwIndex,LPWSTR lpName,DWORD cchName);
200 WINADVAPI LONG WINAPI RegEnumKeyExA(HKEY hKey,DWORD dwIndex,LPSTR lpName,LPDWORD lpcchName,LPDWORD lpReserved,LPSTR lpClass,LPDWORD lpcchClass,PFILETIME lpftLastWriteTime);
201 WINADVAPI LONG WINAPI RegEnumKeyExW(HKEY hKey,DWORD dwIndex,LPWSTR lpName,LPDWORD lpcchName,LPDWORD lpReserved,LPWSTR lpClass,LPDWORD lpcchClass,PFILETIME lpftLastWriteTime);
202 WINADVAPI LONG WINAPI RegEnumValueA(HKEY hKey,DWORD dwIndex,LPSTR lpValueName,LPDWORD lpcchValueName,LPDWORD lpReserved,LPDWORD lpType,LPBYTE lpData,LPDWORD lpcbData);
203 WINADVAPI LONG WINAPI RegEnumValueW(HKEY hKey,DWORD dwIndex,LPWSTR lpValueName,LPDWORD lpcchValueName,LPDWORD lpReserved,LPDWORD lpType,LPBYTE lpData,LPDWORD lpcbData);
204 WINADVAPI LONG WINAPI RegFlushKey(HKEY hKey);
205 WINADVAPI LONG WINAPI RegGetKeySecurity(HKEY hKey,SECURITY_INFORMATION SecurityInformation,PSECURITY_DESCRIPTOR pSecurityDescriptor,LPDWORD lpcbSecurityDescriptor);
206 WINADVAPI LONG WINAPI RegLoadKeyA(HKEY hKey,LPCSTR lpSubKey,LPCSTR lpFile);
207 WINADVAPI LONG WINAPI RegLoadKeyW(HKEY hKey,LPCWSTR lpSubKey,LPCWSTR lpFile);
208 WINADVAPI LONG WINAPI RegNotifyChangeKeyValue(HKEY hKey,WINBOOL bWatchSubtree,DWORD dwNotifyFilter,HANDLE hEvent,WINBOOL fAsynchronous);
209 WINADVAPI LONG WINAPI RegOpenKeyA(HKEY hKey,LPCSTR lpSubKey,PHKEY phkResult);
210 WINADVAPI LONG WINAPI RegOpenKeyW(HKEY hKey,LPCWSTR lpSubKey,PHKEY phkResult);
211 WINADVAPI LONG WINAPI RegOpenKeyExA(HKEY hKey,LPCSTR lpSubKey,DWORD ulOptions,REGSAM samDesired,PHKEY phkResult);
212 WINADVAPI LONG WINAPI RegOpenKeyExW(HKEY hKey,LPCWSTR lpSubKey,DWORD ulOptions,REGSAM samDesired,PHKEY phkResult);
213 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);
214 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);
215 WINADVAPI LONG WINAPI RegQueryValueA(HKEY hKey,LPCSTR lpSubKey,LPSTR lpData,PLONG lpcbData);
216 WINADVAPI LONG WINAPI RegQueryValueW(HKEY hKey,LPCWSTR lpSubKey,LPWSTR lpData,PLONG lpcbData);
217 WINADVAPI LONG WINAPI RegQueryMultipleValuesA(HKEY hKey,PVALENTA val_list,DWORD num_vals,LPSTR lpValueBuf,LPDWORD ldwTotsize);
218 WINADVAPI LONG WINAPI RegQueryMultipleValuesW(HKEY hKey,PVALENTW val_list,DWORD num_vals,LPWSTR lpValueBuf,LPDWORD ldwTotsize);
219 WINADVAPI LONG WINAPI RegQueryValueExA(HKEY hKey,LPCSTR lpValueName,LPDWORD lpReserved,LPDWORD lpType,LPBYTE lpData,LPDWORD lpcbData);
220 WINADVAPI LONG WINAPI RegQueryValueExW(HKEY hKey,LPCWSTR lpValueName,LPDWORD lpReserved,LPDWORD lpType,LPBYTE lpData,LPDWORD lpcbData);
221 WINADVAPI LONG WINAPI RegReplaceKeyA(HKEY hKey,LPCSTR lpSubKey,LPCSTR lpNewFile,LPCSTR lpOldFile);
222 WINADVAPI LONG WINAPI RegReplaceKeyW(HKEY hKey,LPCWSTR lpSubKey,LPCWSTR lpNewFile,LPCWSTR lpOldFile);
223 WINADVAPI LONG WINAPI RegRestoreKeyA(HKEY hKey,LPCSTR lpFile,DWORD dwFlags);
224 WINADVAPI LONG WINAPI RegRestoreKeyW(HKEY hKey,LPCWSTR lpFile,DWORD dwFlags);
225 WINADVAPI LONG WINAPI RegSaveKeyA(HKEY hKey,LPCSTR lpFile,LPSECURITY_ATTRIBUTES lpSecurityAttributes);
226 WINADVAPI LONG WINAPI RegSaveKeyW(HKEY hKey,LPCWSTR lpFile,LPSECURITY_ATTRIBUTES lpSecurityAttributes);
227 WINADVAPI LONG WINAPI RegSetKeySecurity(HKEY hKey,SECURITY_INFORMATION SecurityInformation,PSECURITY_DESCRIPTOR pSecurityDescriptor);
228 WINADVAPI LONG WINAPI RegSetValueA(HKEY hKey,LPCSTR lpSubKey,DWORD dwType,LPCSTR lpData,DWORD cbData);
229 WINADVAPI LONG WINAPI RegSetValueW(HKEY hKey,LPCWSTR lpSubKey,DWORD dwType,LPCWSTR lpData,DWORD cbData);
230 WINADVAPI LONG WINAPI RegSetValueExA(HKEY hKey,LPCSTR lpValueName,DWORD Reserved,DWORD dwType,CONST BYTE *lpData,DWORD cbData);
231 WINADVAPI LONG WINAPI RegSetValueExW(HKEY hKey,LPCWSTR lpValueName,DWORD Reserved,DWORD dwType,CONST BYTE *lpData,DWORD cbData);
232 WINADVAPI LONG WINAPI RegUnLoadKeyA(HKEY hKey,LPCSTR lpSubKey);
233 WINADVAPI LONG WINAPI RegUnLoadKeyW(HKEY hKey,LPCWSTR lpSubKey);
234 WINADVAPI LONG WINAPI RegGetValueA(HKEY hkey,LPCSTR lpSubKey,LPCSTR lpValue,DWORD dwFlags,LPDWORD pdwType,PVOID pvData,LPDWORD pcbData);
235 WINADVAPI LONG WINAPI RegGetValueW(HKEY hkey,LPCWSTR lpSubKey,LPCWSTR lpValue,DWORD dwFlags,LPDWORD pdwType,PVOID pvData,LPDWORD pcbData);
236 WINADVAPI WINBOOL WINAPI InitiateSystemShutdownA(LPSTR lpMachineName,LPSTR lpMessage,DWORD dwTimeout,WINBOOL bForceAppsClosed,WINBOOL bRebootAfterShutdown);
237 WINADVAPI WINBOOL WINAPI InitiateSystemShutdownW(LPWSTR lpMachineName,LPWSTR lpMessage,DWORD dwTimeout,WINBOOL bForceAppsClosed,WINBOOL bRebootAfterShutdown);
238 WINADVAPI WINBOOL WINAPI AbortSystemShutdownA(LPSTR lpMachineName);
239 WINADVAPI WINBOOL WINAPI AbortSystemShutdownW(LPWSTR lpMachineName);
241 #include <reason.h>
243 #define REASON_SWINSTALL SHTDN_REASON_MAJOR_SOFTWARE|SHTDN_REASON_MINOR_INSTALLATION
244 #define REASON_HWINSTALL SHTDN_REASON_MAJOR_HARDWARE|SHTDN_REASON_MINOR_INSTALLATION
245 #define REASON_SERVICEHANG SHTDN_REASON_MAJOR_SOFTWARE|SHTDN_REASON_MINOR_HUNG
246 #define REASON_UNSTABLE SHTDN_REASON_MAJOR_SYSTEM|SHTDN_REASON_MINOR_UNSTABLE
247 #define REASON_SWHWRECONF SHTDN_REASON_MAJOR_SOFTWARE|SHTDN_REASON_MINOR_RECONFIG
248 #define REASON_OTHER SHTDN_REASON_MAJOR_OTHER|SHTDN_REASON_MINOR_OTHER
249 #define REASON_UNKNOWN SHTDN_REASON_UNKNOWN
250 #define REASON_LEGACY_API SHTDN_REASON_LEGACY_API
251 #define REASON_PLANNED_FLAG SHTDN_REASON_FLAG_PLANNED
253 #define MAX_SHUTDOWN_TIMEOUT (10*365*24*60*60)
255 #ifdef UNICODE
256 #define InitiateSystemShutdownEx InitiateSystemShutdownExW
257 #define RegSaveKeyEx RegSaveKeyExW
258 #else
259 #define InitiateSystemShutdownEx InitiateSystemShutdownExA
260 #define RegSaveKeyEx RegSaveKeyExA
261 #endif
263 WINADVAPI WINBOOL WINAPI InitiateSystemShutdownExA(LPSTR lpMachineName,LPSTR lpMessage,DWORD dwTimeout,WINBOOL bForceAppsClosed,WINBOOL bRebootAfterShutdown,DWORD dwReason);
264 WINADVAPI WINBOOL WINAPI InitiateSystemShutdownExW(LPWSTR lpMachineName,LPWSTR lpMessage,DWORD dwTimeout,WINBOOL bForceAppsClosed,WINBOOL bRebootAfterShutdown,DWORD dwReason);
265 WINADVAPI LONG WINAPI RegSaveKeyExA(HKEY hKey,LPCSTR lpFile,LPSECURITY_ATTRIBUTES lpSecurityAttributes,DWORD Flags);
266 WINADVAPI LONG WINAPI RegSaveKeyExW(HKEY hKey,LPCWSTR lpFile,LPSECURITY_ATTRIBUTES lpSecurityAttributes,DWORD Flags);
267 WINADVAPI LONG WINAPI Wow64Win32ApiEntry (DWORD dwFuncNumber,DWORD dwFlag,DWORD dwRes);
269 #ifdef __cplusplus
271 #endif
272 #endif