root/trunk/win32/winreg.d

Revision 352, 9.0 kB (checked in by Yu Hozuki, 2 years ago)

Many argument types and return types were improved to const using CPtr template.
They follow the original headers.

Line 
1 /***********************************************************************\
2 *                                winreg.d                               *
3 *                                                                       *
4 *                       Windows API header module                       *
5 *                                                                       *
6 *                 Translated from MinGW Windows headers                 *
7 *                           by Stewart Gordon                           *
8 *                                                                       *
9 *                       Placed into public domain                       *
10 \***********************************************************************/
11 module win32.winreg;
12 pragma(lib, "advapi32.lib");
13
14 private import win32.w32api, win32.winbase, win32.windef;
15
16 const HKEY
17     HKEY_CLASSES_ROOT     = cast(HKEY) 0x80000000,
18     HKEY_CURRENT_USER     = cast(HKEY) 0x80000001,
19     HKEY_LOCAL_MACHINE    = cast(HKEY) 0x80000002,
20     HKEY_USERS            = cast(HKEY) 0x80000003,
21     HKEY_PERFORMANCE_DATA = cast(HKEY) 0x80000004,
22     HKEY_CURRENT_CONFIG   = cast(HKEY) 0x80000005,
23     HKEY_DYN_DATA         = cast(HKEY) 0x80000006;
24
25 enum : DWORD {
26     REG_OPTION_NON_VOLATILE,
27     REG_OPTION_VOLATILE
28 }
29
30 enum : DWORD {
31     REG_CREATED_NEW_KEY = 1,
32     REG_OPENED_EXISTING_KEY
33 }
34
35 enum : DWORD {
36     REG_NONE                       = 0,
37     REG_SZ,
38     REG_EXPAND_SZ,
39     REG_BINARY,
40     REG_DWORD_LITTLE_ENDIAN,
41     REG_DWORD                      = REG_DWORD_LITTLE_ENDIAN,
42     REG_DWORD_BIG_ENDIAN,
43     REG_LINK,
44     REG_MULTI_SZ,
45     REG_RESOURCE_LIST,
46     REG_FULL_RESOURCE_DESCRIPTOR,
47     REG_RESOURCE_REQUIREMENTS_LIST,
48     REG_QWORD_LITTLE_ENDIAN,
49     REG_QWORD                      = REG_QWORD_LITTLE_ENDIAN
50 }
51
52 const DWORD
53     REG_NOTIFY_CHANGE_NAME       = 1,
54     REG_NOTIFY_CHANGE_ATTRIBUTES = 2,
55     REG_NOTIFY_CHANGE_LAST_SET   = 4,
56     REG_NOTIFY_CHANGE_SECURITY   = 8;
57
58 alias ACCESS_MASK REGSAM;
59
60 struct VALENTA {
61     LPSTR ve_valuename;
62     DWORD ve_valuelen;
63     DWORD ve_valueptr;
64     DWORD ve_type;
65 }
66 alias VALENTA* PVALENTA;
67
68 struct VALENTW {
69     LPWSTR ve_valuename;
70     DWORD  ve_valuelen;
71     DWORD  ve_valueptr;
72     DWORD  ve_type;
73 }
74 alias VALENTW* PVALENTW;
75
76 // RRF - Registry Routine Flags (for RegGetValue)
77 static if (WINVER >= 0x600) {
78     enum : DWORD {
79         RRF_RT_REG_NONE      = 0x00000001,
80         RRF_RT_REG_SZ        = 0x00000002,
81         RRF_RT_REG_EXPAND_SZ = 0x00000004,
82         RRF_RT_REG_BINARY    = 0x00000008,
83         RRF_RT_REG_DWORD     = 0x00000010,
84         RRF_RT_REG_MULTI_SZ  = 0x00000020,
85         RRF_RT_REG_QWORD     = 0x00000040,
86         RRF_RT_DWORD         = RRF_RT_REG_BINARY | RRF_RT_REG_DWORD,
87         RRF_RT_QWORD         = RRF_RT_REG_BINARY | RRF_RT_REG_QWORD,
88         RRF_RT_ANY           = 0x0000FFFF,
89         RRF_NOEXPAND         = 0x10000000,
90         RRF_ZEROONFAILURE    = 0x20000000
91     }
92 }
93
94 extern (Windows) {
95     LONG RegCloseKey(HKEY);
96     LONG RegConnectRegistryA(LPCSTR, HKEY, PHKEY);
97     LONG RegConnectRegistryW(LPCWSTR, HKEY, PHKEY);
98     LONG RegCreateKeyExA(HKEY, LPCSTR, DWORD, LPSTR, DWORD, REGSAM,
99       LPSECURITY_ATTRIBUTES, PHKEY, PDWORD);
100     LONG RegCreateKeyExW(HKEY, LPCWSTR, DWORD, LPWSTR, DWORD, REGSAM,
101       LPSECURITY_ATTRIBUTES, PHKEY, PDWORD);
102     LONG RegDeleteKeyA(HKEY, LPCSTR);
103     LONG RegDeleteKeyW(HKEY, LPCWSTR);
104     LONG RegDeleteValueA(HKEY, LPCSTR);
105     LONG RegDeleteValueW(HKEY, LPCWSTR);
106     LONG RegEnumKeyExA(HKEY, DWORD, LPSTR, PDWORD, PDWORD, LPSTR, PDWORD,
107       PFILETIME);
108     LONG RegEnumKeyExW(HKEY, DWORD, LPWSTR, PDWORD, PDWORD, LPWSTR, PDWORD,
109       PFILETIME);
110     LONG RegEnumValueA(HKEY, DWORD, LPSTR, PDWORD, PDWORD, PDWORD, LPBYTE,
111       PDWORD);
112     LONG RegEnumValueW(HKEY, DWORD, LPWSTR, PDWORD, PDWORD, PDWORD, LPBYTE,
113       PDWORD);
114     LONG RegFlushKey(HKEY);
115     LONG RegLoadKeyA(HKEY, LPCSTR, LPCSTR);
116     LONG RegLoadKeyW(HKEY, LPCWSTR, LPCWSTR);
117     LONG RegOpenKeyExA(HKEY, LPCSTR, DWORD, REGSAM, PHKEY);
118     LONG RegOpenKeyExW(HKEY, LPCWSTR, DWORD, REGSAM, PHKEY);
119     LONG RegQueryInfoKeyA(HKEY, LPSTR, PDWORD, PDWORD, PDWORD, PDWORD,
120       PDWORD, PDWORD, PDWORD, PDWORD, PDWORD, PFILETIME);
121     LONG RegQueryInfoKeyW(HKEY, LPWSTR, PDWORD, PDWORD, PDWORD, PDWORD,
122       PDWORD, PDWORD, PDWORD, PDWORD, PDWORD, PFILETIME);
123     LONG RegQueryMultipleValuesA(HKEY, PVALENTA, DWORD, LPSTR, LPDWORD);
124     LONG RegQueryMultipleValuesW(HKEY, PVALENTW, DWORD, LPWSTR, LPDWORD);
125     LONG RegQueryValueExA(HKEY, LPCSTR, LPDWORD, LPDWORD, LPBYTE, LPDWORD);
126     LONG RegQueryValueExW(HKEY, LPCWSTR, LPDWORD, LPDWORD, LPBYTE, LPDWORD);
127     LONG RegReplaceKeyA(HKEY, LPCSTR, LPCSTR, LPCSTR);
128     LONG RegReplaceKeyW(HKEY, LPCWSTR, LPCWSTR, LPCWSTR);
129     LONG RegSaveKeyA(HKEY, LPCSTR, LPSECURITY_ATTRIBUTES);
130     LONG RegSaveKeyW(HKEY, LPCWSTR, LPSECURITY_ATTRIBUTES);
131     LONG RegSetKeySecurity(HKEY, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR);
132     LONG RegSetValueExA(HKEY, LPCSTR, DWORD, DWORD, CPtr!(BYTE), DWORD);
133     LONG RegSetValueExW(HKEY, LPCWSTR, DWORD, DWORD, CPtr!(BYTE), DWORD);
134     LONG RegUnLoadKeyA(HKEY, LPCSTR);
135     LONG RegUnLoadKeyW(HKEY, LPCWSTR);
136     static if (_WIN32_WINDOWS >= 0x410) {
137         LONG RegNotifyChangeKeyValue(HKEY, BOOL, DWORD, HANDLE, BOOL);
138     }
139
140     static if (_WIN32_WINNT_ONLY) {
141         BOOL AbortSystemShutdownA(LPCSTR);
142         BOOL AbortSystemShutdownW(LPCWSTR);
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
152         static if (_WIN32_WINNT >= 0x500) {
153             LONG RegDisablePredefinedCache();
154             LONG RegOpenCurrentUser(REGSAM, PHKEY);
155             LONG RegOpenUserClassesRoot(HANDLE, DWORD, REGSAM, PHKEY);
156         }
157
158         static if (_WIN32_WINNT >= 0x501) {
159             LONG RegSaveKeyExA(HKEY, LPCSTR, LPSECURITY_ATTRIBUTES, DWORD);
160             LONG RegSaveKeyExW(HKEY, LPCWSTR, LPSECURITY_ATTRIBUTES, DWORD);
161         }
162
163         static if (_WIN32_WINNT >= 0x600) {
164             LONG RegGetValueA(HKEY hkey, LPCSTR lpSubKey, LPCSTR lpValue,
165               DWORD dwFlags, LPDWORD pdwType, PVOID pvData, LPDWORD pcbData);
166             LONG RegGetValueW(HKEY hkey, LPCWSTR lpSubKey, LPCWSTR lpValue,
167               DWORD dwFlags, LPDWORD pdwType, PVOID pvData, LPDWORD pcbData);
168         }
169     }
170
171     deprecated {
172         LONG RegCreateKeyA(HKEY, LPCSTR, PHKEY);
173         LONG RegCreateKeyW(HKEY, LPCWSTR, PHKEY);
174         LONG RegEnumKeyA(HKEY, DWORD, LPSTR, DWORD);
175         LONG RegEnumKeyW(HKEY, DWORD, LPWSTR, DWORD);
176         LONG RegOpenKeyA(HKEY, LPCSTR, PHKEY);
177         LONG RegOpenKeyW(HKEY, LPCWSTR, PHKEY);
178         LONG RegQueryValueA(HKEY, LPCSTR, LPSTR, PLONG);
179         LONG RegQueryValueW(HKEY, LPCWSTR, LPWSTR, PLONG);
180         LONG RegSetValueA(HKEY, LPCSTR, DWORD, LPCSTR, DWORD);
181         LONG RegSetValueW(HKEY, LPCWSTR, DWORD, LPCWSTR, DWORD);
182     }
183 }
184
185 version (Unicode) {
186     alias VALENTW VALENT;
187     alias RegConnectRegistryW RegConnectRegistry;
188     alias RegCreateKeyExW RegCreateKeyEx;
189     alias RegDeleteKeyW RegDeleteKey;
190     alias RegDeleteValueW RegDeleteValue;
191     alias RegEnumKeyExW RegEnumKeyEx;
192     alias RegEnumValueW RegEnumValue;
193     alias RegLoadKeyW RegLoadKey;
194     alias RegOpenKeyExW RegOpenKeyEx;
195     alias RegQueryInfoKeyW RegQueryInfoKey;
196     alias RegQueryMultipleValuesW RegQueryMultipleValues;
197     alias RegQueryValueExW RegQueryValueEx;
198     alias RegReplaceKeyW RegReplaceKey;
199     alias RegSaveKeyW RegSaveKey;
200     alias RegSetValueExW RegSetValueEx;
201     alias RegUnLoadKeyW RegUnLoadKey;
202
203     static if (_WIN32_WINNT_ONLY) {
204         alias AbortSystemShutdownW AbortSystemShutdown;
205         alias InitiateSystemShutdownW InitiateSystemShutdown;
206         alias RegRestoreKeyW RegRestoreKey;
207         static if (_WIN32_WINNT >= 0x501) {
208             alias RegSaveKeyExA RegSaveKeyEx;
209         }
210         static if (_WIN32_WINNT >= 0x600) {
211             alias RegGetValueW RegGetValue;
212         }
213     }
214     deprecated {
215         alias RegCreateKeyW RegCreateKey;
216         alias RegEnumKeyW RegEnumKey;
217         alias RegOpenKeyW RegOpenKey;
218         alias RegQueryValueW RegQueryValue;
219         alias RegSetValueW RegSetValue;
220     }
221 } else {
222     alias VALENTA VALENT;
223     alias RegConnectRegistryA RegConnectRegistry;
224     alias RegCreateKeyExA RegCreateKeyEx;
225     alias RegDeleteKeyA RegDeleteKey;
226     alias RegDeleteValueA RegDeleteValue;
227     alias RegEnumKeyExA RegEnumKeyEx;
228     alias RegEnumValueA RegEnumValue;
229     alias RegLoadKeyA RegLoadKey;
230     alias RegOpenKeyExA RegOpenKeyEx;
231     alias RegQueryInfoKeyA RegQueryInfoKey;
232     alias RegQueryMultipleValuesA RegQueryMultipleValues;
233     alias RegQueryValueExA RegQueryValueEx;
234     alias RegReplaceKeyA RegReplaceKey;
235     alias RegSaveKeyA RegSaveKey;
236     alias RegSetValueExA RegSetValueEx;
237     alias RegUnLoadKeyA RegUnLoadKey;
238     static if (_WIN32_WINNT_ONLY) {
239         alias AbortSystemShutdownA AbortSystemShutdown;
240         alias InitiateSystemShutdownA InitiateSystemShutdown;
241         alias RegRestoreKeyW RegRestoreKey;
242         static if (_WIN32_WINNT >= 0x501) {
243             alias RegSaveKeyExA RegSaveKeyEx;
244         }
245         static if (_WIN32_WINNT >= 0x600) {
246             alias RegGetValueA RegGetValue;
247         }
248     }
249     deprecated {
250         alias RegCreateKeyA RegCreateKey;
251         alias RegEnumKeyA RegEnumKey;
252         alias RegOpenKeyA RegOpenKey;
253         alias RegQueryValueA RegQueryValue;
254         alias RegSetValueA RegSetValue;
255     }
256 }
257
258 alias VALENT* PVALENT;
Note: See TracBrowser for help on using the browser.