Differences From Artifact [e5d43e62c628c0b0]:
- File
src/win32/winreg.d
- 2015-04-21 10:46:55 - part of checkin [4e2933c620] on branch trunk - Rebased to the latest verson dmd 2.067. Not yet verified the outcome. (user: kinaba) [annotate]
To Artifact [3495de98d7c1ed4e]:
- File
src/win32/winreg.d
-
2015-05-05 06:49:05
- part of checkin
[9b639cf2d6]
on branch trunk
- Working version for update to 2.067.
The problem was __gshared. Replacing it with TLS fixed the issue. Remaining problem is that "hack.d"'s CloseHandle hack is not working anymore.
(user: kinaba) [annotate]
-
2015-05-05 06:49:05
- part of checkin
[9b639cf2d6]
on branch trunk
- Working version for update to 2.067.
5 * * 5 * *
6 * Translated from MinGW Windows headers * 6 * Translated from MinGW Windows headers *
7 * by Stewart Gordon * 7 * by Stewart Gordon *
8 * * 8 * *
9 * Placed into public domain * 9 * Placed into public domain *
10 \***********************************************************************/ 10 \***********************************************************************/
11 module win32.winreg; 11 module win32.winreg;
12 pragma(lib, "advapi32.lib"); | 12 pragma(lib, "advapi32");
13 13
14 private import win32.w32api, win32.winbase, win32.windef; 14 private import win32.w32api, win32.winbase, win32.windef;
15 15
16 const HKEY | 16 enum : HKEY { // for some reason, DMD errors if I don't give all the values expl
17 HKEY_CLASSES_ROOT = cast(HKEY) 0x80000000, 17 HKEY_CLASSES_ROOT = cast(HKEY) 0x80000000,
18 HKEY_CURRENT_USER = cast(HKEY) 0x80000001, 18 HKEY_CURRENT_USER = cast(HKEY) 0x80000001,
19 HKEY_LOCAL_MACHINE = cast(HKEY) 0x80000002, 19 HKEY_LOCAL_MACHINE = cast(HKEY) 0x80000002,
20 HKEY_USERS = cast(HKEY) 0x80000003, 20 HKEY_USERS = cast(HKEY) 0x80000003,
21 HKEY_PERFORMANCE_DATA = cast(HKEY) 0x80000004, 21 HKEY_PERFORMANCE_DATA = cast(HKEY) 0x80000004,
22 HKEY_CURRENT_CONFIG = cast(HKEY) 0x80000005, 22 HKEY_CURRENT_CONFIG = cast(HKEY) 0x80000005,
23 HKEY_DYN_DATA = cast(HKEY) 0x80000006; | 23 HKEY_DYN_DATA = cast(HKEY) 0x80000006
> 24 }
24 25
25 enum : DWORD { 26 enum : DWORD {
26 REG_OPTION_NON_VOLATILE, 27 REG_OPTION_NON_VOLATILE,
27 REG_OPTION_VOLATILE 28 REG_OPTION_VOLATILE
28 } 29 }
29 30
30 enum : DWORD { 31 enum : DWORD {
................................................................................................................................................................................
70 DWORD ve_valuelen; 71 DWORD ve_valuelen;
71 DWORD ve_valueptr; 72 DWORD ve_valueptr;
72 DWORD ve_type; 73 DWORD ve_type;
73 } 74 }
74 alias VALENTW* PVALENTW; 75 alias VALENTW* PVALENTW;
75 76
76 // RRF - Registry Routine Flags (for RegGetValue) 77 // RRF - Registry Routine Flags (for RegGetValue)
77 static if (WINVER >= 0x600) { | 78 static if (_WIN32_WINNT >= 0x600) {
78 enum : DWORD { 79 enum : DWORD {
79 RRF_RT_REG_NONE = 0x00000001, 80 RRF_RT_REG_NONE = 0x00000001,
80 RRF_RT_REG_SZ = 0x00000002, 81 RRF_RT_REG_SZ = 0x00000002,
81 RRF_RT_REG_EXPAND_SZ = 0x00000004, 82 RRF_RT_REG_EXPAND_SZ = 0x00000004,
82 RRF_RT_REG_BINARY = 0x00000008, 83 RRF_RT_REG_BINARY = 0x00000008,
83 RRF_RT_REG_DWORD = 0x00000010, 84 RRF_RT_REG_DWORD = 0x00000010,
84 RRF_RT_REG_MULTI_SZ = 0x00000020, 85 RRF_RT_REG_MULTI_SZ = 0x00000020,
................................................................................................................................................................................
125 LONG RegQueryValueExA(HKEY, LPCSTR, LPDWORD, LPDWORD, LPBYTE, LPDWORD); 126 LONG RegQueryValueExA(HKEY, LPCSTR, LPDWORD, LPDWORD, LPBYTE, LPDWORD);
126 LONG RegQueryValueExW(HKEY, LPCWSTR, LPDWORD, LPDWORD, LPBYTE, LPDWORD); 127 LONG RegQueryValueExW(HKEY, LPCWSTR, LPDWORD, LPDWORD, LPBYTE, LPDWORD);
127 LONG RegReplaceKeyA(HKEY, LPCSTR, LPCSTR, LPCSTR); 128 LONG RegReplaceKeyA(HKEY, LPCSTR, LPCSTR, LPCSTR);
128 LONG RegReplaceKeyW(HKEY, LPCWSTR, LPCWSTR, LPCWSTR); 129 LONG RegReplaceKeyW(HKEY, LPCWSTR, LPCWSTR, LPCWSTR);
129 LONG RegSaveKeyA(HKEY, LPCSTR, LPSECURITY_ATTRIBUTES); 130 LONG RegSaveKeyA(HKEY, LPCSTR, LPSECURITY_ATTRIBUTES);
130 LONG RegSaveKeyW(HKEY, LPCWSTR, LPSECURITY_ATTRIBUTES); 131 LONG RegSaveKeyW(HKEY, LPCWSTR, LPSECURITY_ATTRIBUTES);
131 LONG RegSetKeySecurity(HKEY, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR) 132 LONG RegSetKeySecurity(HKEY, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR)
132 LONG RegSetValueExA(HKEY, LPCSTR, DWORD, DWORD, CPtr!(BYTE), DWORD); | 133 LONG RegSetValueExA(HKEY, LPCSTR, DWORD, DWORD, const(BYTE)*, DWORD);
133 LONG RegSetValueExW(HKEY, LPCWSTR, DWORD, DWORD, CPtr!(BYTE), DWORD); | 134 LONG RegSetValueExW(HKEY, LPCWSTR, DWORD, DWORD, const(BYTE)*, DWORD);
134 LONG RegUnLoadKeyA(HKEY, LPCSTR); 135 LONG RegUnLoadKeyA(HKEY, LPCSTR);
135 LONG RegUnLoadKeyW(HKEY, LPCWSTR); 136 LONG RegUnLoadKeyW(HKEY, LPCWSTR);
136 static if (_WIN32_WINDOWS >= 0x410) { <
137 LONG RegNotifyChangeKeyValue(HKEY, BOOL, DWORD, HANDLE, BOOL); | 137 LONG RegNotifyChangeKeyValue(HKEY, BOOL, DWORD, HANDLE, BOOL);
> 138
> 139 BOOL AbortSystemShutdownA(LPCSTR);
> 140 BOOL AbortSystemShutdownW(LPCWSTR);
> 141 BOOL InitiateSystemShutdownA(LPSTR, LPSTR, DWORD, BOOL, BOOL);
> 142 BOOL InitiateSystemShutdownW(LPWSTR, LPWSTR, DWORD, BOOL, BOOL);
> 143 LONG RegGetKeySecurity(HKEY, SECURITY_INFORMATION,
> 144 PSECURITY_DESCRIPTOR, PDWORD);
> 145 LONG RegRestoreKeyA(HKEY, LPCSTR, DWORD);
> 146 LONG RegRestoreKeyW(HKEY, LPCWSTR, DWORD);
> 147 LONG RegSetKeySecurity(HKEY, SECURITY_INFORMATION,
> 148 PSECURITY_DESCRIPTOR);
> 149
> 150 static if (_WIN32_WINNT >= 0x500) {
> 151 LONG RegDisablePredefinedCache();
> 152 LONG RegOpenCurrentUser(REGSAM, PHKEY);
> 153 LONG RegOpenUserClassesRoot(HANDLE, DWORD, REGSAM, PHKEY);
138 } 154 }
139 155
140 static if (_WIN32_WINNT_ONLY) { | 156 static if (_WIN32_WINNT >= 0x501) {
141 BOOL AbortSystemShutdownA(LPCSTR); | 157 LONG RegSaveKeyExA(HKEY, LPCSTR, LPSECURITY_ATTRIBUTES, DWORD);
142 BOOL AbortSystemShutdownW(LPCWSTR); | 158 LONG RegSaveKeyExW(HKEY, LPCWSTR, LPSECURITY_ATTRIBUTES, DWORD);
143 BOOL InitiateSystemShutdownA(LPSTR, LPSTR, DWORD, BOOL, BOOL); <
144 BOOL InitiateSystemShutdownW(LPWSTR, LPWSTR, DWORD, BOOL, BOOL); <
145 LONG RegGetKeySecurity(HKEY, SECURITY_INFORMATION, <
146 PSECURITY_DESCRIPTOR, PDWORD); <
147 LONG RegRestoreKeyA(HKEY, LPCSTR, DWORD); <
148 LONG RegRestoreKeyW(HKEY, LPCWSTR, DWORD); <
149 LONG RegSetKeySecurity(HKEY, SECURITY_INFORMATION, <
150 PSECURITY_DESCRIPTOR); <
151 | 159 }
152 static if (_WIN32_WINNT >= 0x500) { <
153 LONG RegDisablePredefinedCache(); <
154 LONG RegOpenCurrentUser(REGSAM, PHKEY); <
155 LONG RegOpenUserClassesRoot(HANDLE, DWORD, REGSAM, PHKEY <
156 } <
157 160
158 static if (_WIN32_WINNT >= 0x501) { <
159 LONG RegSaveKeyExA(HKEY, LPCSTR, LPSECURITY_ATTRIBUTES, <
160 LONG RegSaveKeyExW(HKEY, LPCWSTR, LPSECURITY_ATTRIBUTES, <
161 } <
162 <
163 static if (_WIN32_WINNT >= 0x600) { | 161 static if (_WIN32_WINNT >= 0x600) {
164 LONG RegGetValueA(HKEY hkey, LPCSTR lpSubKey, LPCSTR lpV | 162 LONG RegGetValueA(HKEY hkey, LPCSTR lpSubKey, LPCSTR lpValue,
165 DWORD dwFlags, LPDWORD pdwType, PVOID pvData, LPDWORD | 163 DWORD dwFlags, LPDWORD pdwType, PVOID pvData, LPDWORD pcbData)
166 LONG RegGetValueW(HKEY hkey, LPCWSTR lpSubKey, LPCWSTR l | 164 LONG RegGetValueW(HKEY hkey, LPCWSTR lpSubKey, LPCWSTR lpValue,
167 DWORD dwFlags, LPDWORD pdwType, PVOID pvData, LPDWORD | 165 DWORD dwFlags, LPDWORD pdwType, PVOID pvData, LPDWORD pcbData)
168 } <
169 } 166 }
170 167
171 deprecated { 168 deprecated {
172 LONG RegCreateKeyA(HKEY, LPCSTR, PHKEY); 169 LONG RegCreateKeyA(HKEY, LPCSTR, PHKEY);
173 LONG RegCreateKeyW(HKEY, LPCWSTR, PHKEY); 170 LONG RegCreateKeyW(HKEY, LPCWSTR, PHKEY);
174 LONG RegEnumKeyA(HKEY, DWORD, LPSTR, DWORD); 171 LONG RegEnumKeyA(HKEY, DWORD, LPSTR, DWORD);
175 LONG RegEnumKeyW(HKEY, DWORD, LPWSTR, DWORD); 172 LONG RegEnumKeyW(HKEY, DWORD, LPWSTR, DWORD);
................................................................................................................................................................................
196 alias RegQueryMultipleValuesW RegQueryMultipleValues; 193 alias RegQueryMultipleValuesW RegQueryMultipleValues;
197 alias RegQueryValueExW RegQueryValueEx; 194 alias RegQueryValueExW RegQueryValueEx;
198 alias RegReplaceKeyW RegReplaceKey; 195 alias RegReplaceKeyW RegReplaceKey;
199 alias RegSaveKeyW RegSaveKey; 196 alias RegSaveKeyW RegSaveKey;
200 alias RegSetValueExW RegSetValueEx; 197 alias RegSetValueExW RegSetValueEx;
201 alias RegUnLoadKeyW RegUnLoadKey; 198 alias RegUnLoadKeyW RegUnLoadKey;
202 199
203 static if (_WIN32_WINNT_ONLY) { <
204 alias AbortSystemShutdownW AbortSystemShutdown; | 200 alias AbortSystemShutdownW AbortSystemShutdown;
205 alias InitiateSystemShutdownW InitiateSystemShutdown; | 201 alias InitiateSystemShutdownW InitiateSystemShutdown;
206 alias RegRestoreKeyW RegRestoreKey; | 202 alias RegRestoreKeyW RegRestoreKey;
207 static if (_WIN32_WINNT >= 0x501) { | 203 static if (_WIN32_WINNT >= 0x501) {
208 alias RegSaveKeyExA RegSaveKeyEx; | 204 alias RegSaveKeyExA RegSaveKeyEx;
209 } | 205 }
210 static if (_WIN32_WINNT >= 0x600) { | 206 static if (_WIN32_WINNT >= 0x600) {
211 alias RegGetValueW RegGetValue; | 207 alias RegGetValueW RegGetValue;
212 } <
213 } 208 }
214 deprecated { 209 deprecated {
215 alias RegCreateKeyW RegCreateKey; 210 alias RegCreateKeyW RegCreateKey;
216 alias RegEnumKeyW RegEnumKey; 211 alias RegEnumKeyW RegEnumKey;
217 alias RegOpenKeyW RegOpenKey; 212 alias RegOpenKeyW RegOpenKey;
218 alias RegQueryValueW RegQueryValue; 213 alias RegQueryValueW RegQueryValue;
219 alias RegSetValueW RegSetValue; 214 alias RegSetValueW RegSetValue;
................................................................................................................................................................................
231 alias RegQueryInfoKeyA RegQueryInfoKey; 226 alias RegQueryInfoKeyA RegQueryInfoKey;
232 alias RegQueryMultipleValuesA RegQueryMultipleValues; 227 alias RegQueryMultipleValuesA RegQueryMultipleValues;
233 alias RegQueryValueExA RegQueryValueEx; 228 alias RegQueryValueExA RegQueryValueEx;
234 alias RegReplaceKeyA RegReplaceKey; 229 alias RegReplaceKeyA RegReplaceKey;
235 alias RegSaveKeyA RegSaveKey; 230 alias RegSaveKeyA RegSaveKey;
236 alias RegSetValueExA RegSetValueEx; 231 alias RegSetValueExA RegSetValueEx;
237 alias RegUnLoadKeyA RegUnLoadKey; 232 alias RegUnLoadKeyA RegUnLoadKey;
238 static if (_WIN32_WINNT_ONLY) { <
239 alias AbortSystemShutdownA AbortSystemShutdown; | 233 alias AbortSystemShutdownA AbortSystemShutdown;
240 alias InitiateSystemShutdownA InitiateSystemShutdown; | 234 alias InitiateSystemShutdownA InitiateSystemShutdown;
241 alias RegRestoreKeyW RegRestoreKey; | 235 alias RegRestoreKeyW RegRestoreKey;
242 static if (_WIN32_WINNT >= 0x501) { | 236 static if (_WIN32_WINNT >= 0x501) {
243 alias RegSaveKeyExA RegSaveKeyEx; | 237 alias RegSaveKeyExA RegSaveKeyEx;
244 } | 238 }
245 static if (_WIN32_WINNT >= 0x600) { | 239 static if (_WIN32_WINNT >= 0x600) {
246 alias RegGetValueA RegGetValue; | 240 alias RegGetValueA RegGetValue;
247 } <
248 } 241 }
249 deprecated { 242 deprecated {
250 alias RegCreateKeyA RegCreateKey; 243 alias RegCreateKeyA RegCreateKey;
251 alias RegEnumKeyA RegEnumKey; 244 alias RegEnumKeyA RegEnumKey;
252 alias RegOpenKeyA RegOpenKey; 245 alias RegOpenKeyA RegOpenKey;
253 alias RegQueryValueA RegQueryValue; 246 alias RegQueryValueA RegQueryValue;
254 alias RegSetValueA RegSetValue; 247 alias RegSetValueA RegSetValue;
255 } 248 }
256 } 249 }
257 250
258 alias VALENT* PVALENT; 251 alias VALENT* PVALENT;