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.
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
56 typedef struct val_context
*PVALCONTEXT
;
58 typedef struct pvalueA
{
61 LPVOID pv_value_context
;
65 typedef struct pvalueW
{
68 LPVOID pv_value_context
;
73 typedef PVALUEW PVALUE
;
74 typedef PPVALUEW PPVALUE
;
76 typedef PVALUEA PVALUE
;
77 typedef PPVALUEA PPVALUE
;
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
;
90 LPVOID pi_key_context
;
93 typedef struct provider_info
*PPROVIDER
;
95 typedef struct value_entA
{
98 DWORD_PTR ve_valueptr
;
102 typedef struct value_entW
{
105 DWORD_PTR ve_valueptr
;
110 typedef VALENTW VALENT
;
111 typedef PVALENTW PVALENT
;
113 typedef VALENTA VALENT
;
114 typedef PVALENTA PVALENT
;
118 #define WIN31_CLASS NULL
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
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
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
);
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)
256 #define InitiateSystemShutdownEx InitiateSystemShutdownExW
257 #define RegSaveKeyEx RegSaveKeyExW
259 #define InitiateSystemShutdownEx InitiateSystemShutdownExA
260 #define RegSaveKeyEx RegSaveKeyExA
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
);