1 /**
2  * Windows API header module
3  *
4  * Translated from MinGW Windows headers
5  *
6  * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0)
7  * Source: $(DRUNTIMESRC core/sys/windows/_shlwapi.d)
8  */
9 /// Automatically imported and edited from the druntime module
10 /// core.sys.windows.shlwapi for the auto-generated win32 package.
11 module win32.shlwapi;
12 //version (Windows):
13 @system:
14 
15 version (ANSI) {} else version = Unicode;
16 version (Win32_UseLib) pragma(lib, "shlwapi");
17 
18 /* Changes compared to MinGW:
19 wnsprintf functions are not included.
20 // Macros unneeded for D
21 #define StrCmpIA lstrcmpiA;
22 #define StrCmpA lstrcmpA;
23 #define StrCpyA lstrcpyA;
24 #define StrCpyNA lstrcpynA;
25 #define MAKEDLLVERULL(major, minor, build, qfe) \
26         (((ULONGLONG)(major) << 48) | \
27          ((ULONGLONG)(minor) << 32) | \
28          ((ULONGLONG)(build) << 16) | \
29          ((ULONGLONG)(  qfe) <<  0))
30 */
31 
32 import win32.objbase, win32.shlobj;
33 import win32.basetyps, win32.objidl, win32.unknwn, win32.windef,
34   win32.winbase, win32.winreg;
35 
36 enum DLLVER_PLATFORM_WINDOWS = 0x00000001;
37 enum DLLVER_PLATFORM_NT      = 0x00000002;
38 
39 enum URL_DONT_ESCAPE_EXTRA_INFO  = 0x02000000;
40 enum URL_DONT_SIMPLIFY           = 0x08000000;
41 enum URL_ESCAPE_PERCENT          = 0x00001000;
42 enum URL_ESCAPE_SEGMENT_ONLY     = 0x00002000;
43 enum URL_ESCAPE_SPACES_ONLY      = 0x04000000;
44 enum URL_ESCAPE_UNSAFE           = 0x20000000;
45 enum URL_INTERNAL_PATH           = 0x00800000;
46 enum URL_PARTFLAG_KEEPSCHEME     = 0x00000001;
47 enum URL_PLUGGABLE_PROTOCOL      = 0x40000000;
48 enum URL_UNESCAPE                = 0x10000000;
49 enum URL_UNESCAPE_HIGH_ANSI_ONLY = 0x00400000;
50 enum URL_UNESCAPE_INPLACE        = 0x00100000;
51 
52 align(1):
53 struct DLLVERSIONINFO
54 {
55     DWORD cbSize = this.sizeof;
56     DWORD dwMajorVersion;
57     DWORD dwMinorVersion;
58     DWORD dwBuildNumber;
59     DWORD dwPlatformID;
60 }
61 
62 struct DLLVERSIONINFO2
63 {
64     DLLVERSIONINFO info1;
65     DWORD dwFlags;
66     ULONGLONG ullVersion;
67 }
68 
69 enum ASSOCSTR {
70     ASSOCSTR_COMMAND,
71     ASSOCSTR_EXECUTABLE,
72     ASSOCSTR_FRIENDLYDOCNAME,
73     ASSOCSTR_FRIENDLYAPPNAME,
74     ASSOCSTR_NOOPEN,
75     ASSOCSTR_SHELLNEWVALUE,
76     ASSOCSTR_DDECOMMAND,
77     ASSOCSTR_DDEIFEXEC,
78     ASSOCSTR_DDEAPPLICATION,
79     ASSOCSTR_DDETOPIC
80 }
81 
82 enum ASSOCKEY
83 {
84     ASSOCKEY_SHELLEXECCLASS = 1,
85     ASSOCKEY_APP,
86     ASSOCKEY_CLASS,
87     ASSOCKEY_BASECLASS
88 }
89 
90 enum ASSOCDATA
91 {
92     ASSOCDATA_MSIDESCRIPTOR = 1,
93     ASSOCDATA_NOACTIVATEHANDLER,
94     ASSOCDATA_QUERYCLASSSTORE
95 }
96 
97 alias DWORD ASSOCF;
98 
99 enum SHREGDEL_FLAGS
100 {
101     SHREGDEL_DEFAULT = 0x00000000,
102     SHREGDEL_HKCU    = 0x00000001,
103     SHREGDEL_HKLM    = 0x00000010,
104     SHREGDEL_BOTH    = 0x00000011
105 }
106 
107 enum SHREGENUM_FLAGS
108 {
109     SHREGENUM_DEFAULT = 0x00000000,
110     SHREGENUM_HKCU    = 0x00000001,
111     SHREGENUM_HKLM    = 0x00000010,
112     SHREGENUM_BOTH    = 0x00000011
113 }
114 
115 enum URLIS
116 {
117     URLIS_URL,
118     URLIS_OPAQUE,
119     URLIS_NOHISTORY,
120     URLIS_FILEURL,
121     URLIS_APPLIABLE,
122     URLIS_DIRECTORY,
123     URLIS_HASQUERY
124 }
125 
126 mixin DECLARE_HANDLE!("HUSKEY");
127 alias HUSKEY* PHUSKEY;
128 
129 extern (Windows)
130 {
131     alias HRESULT function (DLLVERSIONINFO *) DLLGETVERSIONPROC;
132 }
133 
134 
135 BOOL IntlStrEqNA()(LPCSTR pStr1, LPCSTR pStr2, int nChar)
136 {
137     return IntlStrEqWorkerA(TRUE, pStr1, pStr2, nChar);
138 }
139 
140 BOOL IntlStrEqNW()(LPCWSTR pStr1, LPCWSTR pStr2, int nChar)
141 {
142     return IntlStrEqWorkerW(TRUE, pStr1, pStr2, nChar);
143 }
144 
145 BOOL IntlStrEqNIA()(LPCSTR pStr1, LPCSTR pStr2, int nChar)
146 {
147     return IntlStrEqWorkerA(FALSE, pStr1, pStr2, nChar);
148 }
149 
150 BOOL IntlStrEqNIW()(LPCWSTR pStr1, LPCWSTR pStr2, int nChar)
151 {
152     return IntlStrEqWorkerW(FALSE, pStr1, pStr2, nChar);
153 }
154 
155 BOOL UrlIsFileUrlA()(LPCSTR pszURL)
156 {
157     return UrlIsA(pszURL, URLIS.URLIS_FILEURL);
158 }
159 
160 BOOL UrlIsFileUrlW()(LPCWSTR pszURL)
161 {
162     return UrlIsW(pszURL, URLIS.URLIS_FILEURL);
163 }
164 
165 HRESULT UrlUnescapeInPlaceA()(LPSTR pszUrl, DWORD dwFlags)
166 {
167     return UrlUnescapeA(pszUrl, null, null, dwFlags | URL_UNESCAPE_INPLACE);
168 }
169 HRESULT UrlUnescapeInPlaceW()(LPWSTR pszUrl, DWORD dwFlags)
170 {
171     return UrlUnescapeW(pszUrl, null, null, dwFlags | URL_UNESCAPE_INPLACE);
172 }
173 
174 extern (Windows):
175 BOOL ChrCmpIA(WORD, WORD);
176 BOOL ChrCmpIW(WCHAR, WCHAR);
177 BOOL IntlStrEqWorkerA(BOOL, LPCSTR, LPCSTR, int);
178 BOOL IntlStrEqWorkerW(BOOL, LPCWSTR, LPCWSTR, int);
179 HRESULT SHStrDupA(LPCSTR, LPWSTR*);
180 HRESULT SHStrDupW(LPCWSTR, LPWSTR*);
181 LPSTR StrCatA(LPSTR, LPCSTR);
182 LPWSTR StrCatW(LPWSTR, LPCWSTR);
183 LPSTR StrCatBuffA(LPSTR, LPCSTR, int);
184 LPWSTR StrCatBuffW(LPWSTR, LPCWSTR, int);
185 DWORD StrCatChainW(LPWSTR, DWORD, DWORD, LPCWSTR);
186 LPSTR StrChrA(LPCSTR, WORD);
187 LPWSTR StrChrW(LPCWSTR, WCHAR);
188 LPSTR StrChrIA(LPCSTR, WORD);
189 LPWSTR StrChrIW(LPCWSTR, WCHAR);
190 int StrCmpIW(LPCWSTR, LPCWSTR);
191 int StrCmpW(LPCWSTR, LPCWSTR);
192 LPWSTR StrCpyW(LPWSTR, LPCWSTR);
193 LPWSTR StrCpyNW(LPWSTR, LPCWSTR, int);
194 int StrCmpNA(LPCSTR, LPCSTR, int);
195 int StrCmpNW(LPCWSTR, LPCWSTR, int);
196 int StrCmpNIA(LPCSTR, LPCSTR, int);
197 int StrCmpNIW(LPCWSTR, LPCWSTR, int);
198 int StrCSpnA(LPCSTR, LPCSTR);
199 int StrCSpnW(LPCWSTR, LPCWSTR);
200 int StrCSpnIA(LPCSTR, LPCSTR);
201 int StrCSpnIW(LPCWSTR, LPCWSTR);
202 LPSTR StrDupA(LPCSTR);
203 LPWSTR StrDupW(LPCWSTR);
204 LPSTR StrFormatByteSize64A(LONGLONG, LPSTR, UINT);
205 LPSTR StrFormatByteSizeA(DWORD, LPSTR, UINT);
206 LPWSTR StrFormatByteSizeW(LONGLONG, LPWSTR, UINT);
207 LPSTR StrFormatKBSizeA(LONGLONG, LPSTR, UINT);
208 LPWSTR StrFormatKBSizeW(LONGLONG, LPWSTR, UINT);
209 int StrFromTimeIntervalA(LPSTR, UINT, DWORD, int);
210 int StrFromTimeIntervalW(LPWSTR, UINT, DWORD, int);
211 BOOL StrIsIntlEqualA(BOOL, LPCSTR, LPCSTR, int);
212 BOOL StrIsIntlEqualW(BOOL, LPCWSTR, LPCWSTR, int);
213 LPSTR StrNCatA(LPSTR, LPCSTR, int);
214 LPWSTR StrNCatW(LPWSTR, LPCWSTR, int);
215 LPSTR StrPBrkA(LPCSTR, LPCSTR);
216 LPWSTR StrPBrkW(LPCWSTR, LPCWSTR);
217 LPSTR StrRChrA(LPCSTR, LPCSTR, WORD);
218 LPWSTR StrRChrW(LPCWSTR, LPCWSTR, WCHAR);
219 LPSTR StrRChrIA(LPCSTR, LPCSTR, WORD);
220 LPWSTR StrRChrIW(LPCWSTR, LPCWSTR, WCHAR);
221 LPSTR StrRStrIA(LPCSTR, LPCSTR, LPCSTR);
222 LPWSTR StrRStrIW(LPCWSTR, LPCWSTR, LPCWSTR);
223 int StrSpnA(LPCSTR, LPCSTR);
224 int StrSpnW(LPCWSTR, LPCWSTR);
225 LPSTR StrStrA(LPCSTR, LPCSTR);
226 LPSTR StrStrIA(LPCSTR, LPCSTR);
227 LPWSTR StrStrIW(LPCWSTR, LPCWSTR);
228 LPWSTR StrStrW(LPCWSTR, LPCWSTR);
229 int StrToIntA(LPCSTR);
230 int StrToIntW(LPCWSTR);
231 BOOL StrToIntExA(LPCSTR, DWORD, int*);
232 BOOL StrToIntExW(LPCWSTR, DWORD, int*);
233 BOOL StrTrimA(LPSTR, LPCSTR);
234 BOOL StrTrimW(LPWSTR, LPCWSTR);
235 LPSTR PathAddBackslashA(LPSTR);
236 LPWSTR PathAddBackslashW(LPWSTR);
237 BOOL PathAddExtensionA(LPSTR, LPCSTR);
238 BOOL PathAddExtensionW(LPWSTR, LPCWSTR);
239 BOOL PathAppendA(LPSTR, LPCSTR);
240 BOOL PathAppendW(LPWSTR, LPCWSTR);
241 LPSTR PathBuildRootA(LPSTR, int);
242 LPWSTR PathBuildRootW(LPWSTR, int);
243 BOOL PathCanonicalizeA(LPSTR, LPCSTR);
244 BOOL PathCanonicalizeW(LPWSTR, LPCWSTR);
245 LPSTR PathCombineA(LPSTR, LPCSTR, LPCSTR);
246 LPWSTR PathCombineW(LPWSTR, LPCWSTR, LPCWSTR);
247 int PathCommonPrefixA(LPCSTR, LPCSTR, LPSTR);
248 int PathCommonPrefixW(LPCWSTR, LPCWSTR, LPWSTR);
249 BOOL PathCompactPathA(HDC, LPSTR, UINT);
250 BOOL PathCompactPathW(HDC, LPWSTR, UINT);
251 BOOL PathCompactPathExA(LPSTR, LPCSTR, UINT, DWORD);
252 BOOL PathCompactPathExW(LPWSTR, LPCWSTR, UINT, DWORD);
253 HRESULT PathCreateFromUrlA(LPCSTR, LPSTR, LPDWORD, DWORD);
254 HRESULT PathCreateFromUrlW(LPCWSTR, LPWSTR, LPDWORD, DWORD);
255 BOOL PathFileExistsA(LPCSTR);
256 BOOL PathFileExistsW(LPCWSTR);
257 LPSTR PathFindExtensionA(LPCSTR);
258 LPWSTR PathFindExtensionW(LPCWSTR);
259 LPSTR PathFindFileNameA(LPCSTR);
260 LPWSTR PathFindFileNameW(LPCWSTR);
261 LPSTR PathFindNextComponentA(LPCSTR);
262 LPWSTR PathFindNextComponentW(LPCWSTR);
263 BOOL PathFindOnPathA(LPSTR, LPCSTR*);
264 BOOL PathFindOnPathW(LPWSTR, LPCWSTR*);
265 LPCSTR PathFindSuffixArrayA(LPCSTR, LPCSTR*, int);
266 LPCWSTR PathFindSuffixArrayW(LPCWSTR, LPCWSTR*, int);
267 LPSTR PathGetArgsA(LPCSTR);
268 LPWSTR PathGetArgsW(LPCWSTR);
269 UINT PathGetCharTypeA(UCHAR);
270 UINT PathGetCharTypeW(WCHAR);
271 int PathGetDriveNumberA(LPCSTR);
272 int PathGetDriveNumberW(LPCWSTR);
273 BOOL PathIsContentTypeA(LPCSTR, LPCSTR);
274 BOOL PathIsContentTypeW(LPCWSTR, LPCWSTR);
275 BOOL PathIsDirectoryA(LPCSTR);
276 BOOL PathIsDirectoryEmptyA(LPCSTR);
277 BOOL PathIsDirectoryEmptyW(LPCWSTR);
278 BOOL PathIsDirectoryW(LPCWSTR);
279 BOOL PathIsFileSpecA(LPCSTR);
280 BOOL PathIsFileSpecW(LPCWSTR);
281 BOOL PathIsLFNFileSpecA(LPCSTR);
282 BOOL PathIsLFNFileSpecW(LPCWSTR);
283 BOOL PathIsNetworkPathA(LPCSTR);
284 BOOL PathIsNetworkPathW(LPCWSTR);
285 BOOL PathIsPrefixA(LPCSTR, LPCSTR);
286 BOOL PathIsPrefixW(LPCWSTR, LPCWSTR);
287 BOOL PathIsRelativeA(LPCSTR);
288 BOOL PathIsRelativeW(LPCWSTR);
289 BOOL PathIsRootA(LPCSTR);
290 BOOL PathIsRootW(LPCWSTR);
291 BOOL PathIsSameRootA(LPCSTR, LPCSTR);
292 BOOL PathIsSameRootW(LPCWSTR, LPCWSTR);
293 BOOL PathIsSystemFolderA(LPCSTR, DWORD);
294 BOOL PathIsSystemFolderW(LPCWSTR, DWORD);
295 BOOL PathIsUNCA(LPCSTR);
296 BOOL PathIsUNCServerA(LPCSTR);
297 BOOL PathIsUNCServerShareA(LPCSTR);
298 BOOL PathIsUNCServerShareW(LPCWSTR);
299 BOOL PathIsUNCServerW(LPCWSTR);
300 BOOL PathIsUNCW(LPCWSTR);
301 BOOL PathIsURLA(LPCSTR);
302 BOOL PathIsURLW(LPCWSTR);
303 BOOL PathMakePrettyA(LPSTR);
304 BOOL PathMakePrettyW(LPWSTR);
305 BOOL PathMakeSystemFolderA(LPSTR);
306 BOOL PathMakeSystemFolderW(LPWSTR);
307 BOOL PathMatchSpecA(LPCSTR, LPCSTR);
308 BOOL PathMatchSpecW(LPCWSTR, LPCWSTR);
309 int PathParseIconLocationA(LPSTR);
310 int PathParseIconLocationW(LPWSTR);
311 void PathQuoteSpacesA(LPSTR);
312 void PathQuoteSpacesW(LPWSTR);
313 BOOL PathRelativePathToA(LPSTR, LPCSTR, DWORD, LPCSTR, DWORD);
314 BOOL PathRelativePathToW(LPWSTR, LPCWSTR, DWORD, LPCWSTR, DWORD);
315 void PathRemoveArgsA(LPSTR);
316 void PathRemoveArgsW(LPWSTR);
317 LPSTR PathRemoveBackslashA(LPSTR);
318 LPWSTR PathRemoveBackslashW(LPWSTR);
319 void PathRemoveBlanksA(LPSTR);
320 void PathRemoveBlanksW(LPWSTR);
321 void PathRemoveExtensionA(LPSTR);
322 void PathRemoveExtensionW(LPWSTR);
323 BOOL PathRemoveFileSpecA(LPSTR);
324 BOOL PathRemoveFileSpecW(LPWSTR);
325 BOOL PathRenameExtensionA(LPSTR, LPCSTR);
326 BOOL PathRenameExtensionW(LPWSTR, LPCWSTR);
327 BOOL PathSearchAndQualifyA(LPCSTR, LPSTR, UINT);
328 BOOL PathSearchAndQualifyW(LPCWSTR, LPWSTR, UINT);
329 void PathSetDlgItemPathA(HWND, int, LPCSTR);
330 void PathSetDlgItemPathW(HWND, int, LPCWSTR);
331 LPSTR PathSkipRootA(LPCSTR);
332 LPWSTR PathSkipRootW(LPCWSTR);
333 void PathStripPathA(LPSTR);
334 void PathStripPathW(LPWSTR);
335 BOOL PathStripToRootA(LPSTR);
336 BOOL PathStripToRootW(LPWSTR);
337 void PathUndecorateA(LPSTR);
338 void PathUndecorateW(LPWSTR);
339 BOOL PathUnExpandEnvStringsA(LPCSTR, LPSTR, UINT);
340 BOOL PathUnExpandEnvStringsW(LPCWSTR, LPWSTR, UINT);
341 BOOL PathUnmakeSystemFolderA(LPSTR);
342 BOOL PathUnmakeSystemFolderW(LPWSTR);
343 void PathUnquoteSpacesA(LPSTR);
344 void PathUnquoteSpacesW(LPWSTR);
345 HRESULT SHAutoComplete(HWND, DWORD);
346 BOOL SHCreateThread(LPTHREAD_START_ROUTINE, void*, DWORD, LPTHREAD_START_ROUTINE);
347 DWORD SHCopyKeyA(HKEY, LPCSTR, HKEY, DWORD);
348 DWORD SHCopyKeyW(HKEY, LPCWSTR, HKEY, DWORD);
349 DWORD SHDeleteEmptyKeyA(HKEY, LPCSTR);
350 DWORD SHDeleteEmptyKeyW(HKEY, LPCWSTR);
351 DWORD SHDeleteKeyA(HKEY, LPCSTR);
352 DWORD SHDeleteKeyW(HKEY, LPCWSTR);
353 DWORD SHEnumKeyExA(HKEY, DWORD, LPSTR, LPDWORD);
354 DWORD SHEnumKeyExW(HKEY, DWORD, LPWSTR, LPDWORD);
355 DWORD SHQueryInfoKeyA(HKEY, LPDWORD, LPDWORD, LPDWORD, LPDWORD);
356 DWORD SHQueryInfoKeyW(HKEY, LPDWORD, LPDWORD, LPDWORD, LPDWORD);
357 DWORD SHQueryValueExA(HKEY, LPCSTR, LPDWORD, LPDWORD, LPVOID, LPDWORD);
358 DWORD SHQueryValueExW(HKEY, LPCWSTR, LPDWORD, LPDWORD, LPVOID, LPDWORD);
359 HRESULT SHGetThreadRef(IUnknown*);
360 HRESULT SHSetThreadRef(IUnknown);
361 BOOL SHSkipJunction(IBindCtx, const(CLSID)*);
362 DWORD SHEnumValueA(HKEY, DWORD, LPSTR, LPDWORD, LPDWORD, LPVOID, LPDWORD);
363 DWORD SHEnumValueW(HKEY, DWORD, LPWSTR, LPDWORD, LPDWORD, LPVOID, LPDWORD);
364 DWORD SHGetValueA(HKEY, LPCSTR, LPCSTR, LPDWORD, LPVOID, LPDWORD);
365 DWORD SHGetValueW(HKEY, LPCWSTR, LPCWSTR, LPDWORD, LPVOID, LPDWORD);
366 DWORD SHSetValueA(HKEY, LPCSTR, LPCSTR, DWORD, LPCVOID, DWORD);
367 DWORD SHSetValueW(HKEY, LPCWSTR, LPCWSTR, DWORD, LPCVOID, DWORD);
368 DWORD SHDeleteValueA(HKEY, LPCSTR, LPCSTR);
369 DWORD SHDeleteValueW(HKEY, LPCWSTR, LPCWSTR);
370 HRESULT AssocCreate(CLSID, const(IID)* , const(LPVOID)*);
371 HRESULT AssocQueryKeyA(ASSOCF, ASSOCKEY, LPCSTR, LPCSTR, HKEY*);
372 HRESULT AssocQueryKeyW(ASSOCF, ASSOCKEY, LPCWSTR, LPCWSTR, HKEY*);
373 HRESULT AssocQueryStringA(ASSOCF, ASSOCSTR, LPCSTR, LPCSTR, LPSTR, DWORD*);
374 HRESULT AssocQueryStringByKeyA(ASSOCF, ASSOCSTR, HKEY, LPCSTR, LPSTR, DWORD*);
375 HRESULT AssocQueryStringByKeyW(ASSOCF, ASSOCSTR, HKEY, LPCWSTR, LPWSTR, DWORD*);
376 HRESULT AssocQueryStringW(ASSOCF, ASSOCSTR, LPCWSTR, LPCWSTR, LPWSTR, DWORD*);
377 HRESULT UrlApplySchemeA(LPCSTR, LPSTR, LPDWORD, DWORD);
378 HRESULT UrlApplySchemeW(LPCWSTR, LPWSTR, LPDWORD, DWORD);
379 HRESULT UrlCanonicalizeA(LPCSTR, LPSTR, LPDWORD, DWORD);
380 HRESULT UrlCanonicalizeW(LPCWSTR, LPWSTR, LPDWORD, DWORD);
381 HRESULT UrlCombineA(LPCSTR, LPCSTR, LPSTR, LPDWORD, DWORD);
382 HRESULT UrlCombineW(LPCWSTR, LPCWSTR, LPWSTR, LPDWORD, DWORD);
383 int UrlCompareA(LPCSTR, LPCSTR, BOOL);
384 int UrlCompareW(LPCWSTR, LPCWSTR, BOOL);
385 HRESULT UrlCreateFromPathA(LPCSTR, LPSTR, LPDWORD, DWORD);
386 HRESULT UrlCreateFromPathW(LPCWSTR, LPWSTR, LPDWORD, DWORD);
387 HRESULT UrlEscapeA(LPCSTR, LPSTR, LPDWORD, DWORD);
388 HRESULT UrlEscapeW(LPCWSTR, LPWSTR, LPDWORD, DWORD);
389 LPCSTR UrlGetLocationA(LPCSTR);
390 LPCWSTR UrlGetLocationW(LPCWSTR);
391 HRESULT UrlGetPartA(LPCSTR, LPSTR, LPDWORD, DWORD, DWORD);
392 HRESULT UrlGetPartW(LPCWSTR, LPWSTR, LPDWORD, DWORD, DWORD);
393 HRESULT UrlHashA(LPCSTR, LPBYTE, DWORD);
394 HRESULT UrlHashW(LPCWSTR, LPBYTE, DWORD);
395 BOOL UrlIsA(LPCSTR, URLIS);
396 BOOL UrlIsW(LPCWSTR, URLIS);
397 BOOL UrlIsNoHistoryA(LPCSTR);
398 BOOL UrlIsNoHistoryW(LPCWSTR);
399 BOOL UrlIsOpaqueA(LPCSTR);
400 BOOL UrlIsOpaqueW(LPCWSTR);
401 HRESULT UrlUnescapeA(LPSTR, LPSTR, LPDWORD, DWORD);
402 HRESULT UrlUnescapeW(LPWSTR, LPWSTR, LPDWORD, DWORD);
403 DWORD SHRegCloseUSKey(HUSKEY);
404 LONG SHRegCreateUSKeyA(LPCSTR, REGSAM, HUSKEY, PHUSKEY, DWORD);
405 LONG SHRegCreateUSKeyW(LPCWSTR, REGSAM, HUSKEY, PHUSKEY, DWORD);
406 LONG SHRegDeleteEmptyUSKeyA(HUSKEY, LPCSTR, SHREGDEL_FLAGS);
407 LONG SHRegDeleteEmptyUSKeyW(HUSKEY, LPCWSTR, SHREGDEL_FLAGS);
408 LONG SHRegDeleteUSValueA(HUSKEY, LPCSTR, SHREGDEL_FLAGS);
409 LONG SHRegDeleteUSValueW(HUSKEY, LPCWSTR, SHREGDEL_FLAGS);
410 HKEY SHRegDuplicateHKey(HKEY);
411 DWORD SHRegEnumUSKeyA(HUSKEY, DWORD, LPSTR, LPDWORD, SHREGENUM_FLAGS);
412 DWORD SHRegEnumUSKeyW(HUSKEY, DWORD, LPWSTR, LPDWORD, SHREGENUM_FLAGS);
413 DWORD SHRegEnumUSValueA(HUSKEY, DWORD, LPSTR, LPDWORD, LPDWORD, LPVOID, LPDWORD, SHREGENUM_FLAGS);
414 DWORD SHRegEnumUSValueW(HUSKEY, DWORD, LPWSTR, LPDWORD, LPDWORD, LPVOID, LPDWORD, SHREGENUM_FLAGS);
415 BOOL SHRegGetBoolUSValueA(LPCSTR, LPCSTR, BOOL, BOOL);
416 BOOL SHRegGetBoolUSValueW(LPCWSTR, LPCWSTR, BOOL, BOOL);
417 DWORD SHRegGetPathA(HKEY, LPCSTR, LPCSTR, LPSTR, DWORD);
418 DWORD SHRegGetPathW(HKEY, LPCWSTR, LPCWSTR, LPWSTR, DWORD);
419 LONG SHRegGetUSValueA(LPCSTR, LPCSTR, LPDWORD, LPVOID, LPDWORD, BOOL, LPVOID, DWORD);
420 LONG SHRegGetUSValueW(LPCWSTR, LPCWSTR, LPDWORD, LPVOID, LPDWORD, BOOL, LPVOID, DWORD);
421 LONG SHRegOpenUSKeyA(LPCSTR, REGSAM, HUSKEY, PHUSKEY, BOOL);
422 LONG SHRegOpenUSKeyW(LPCWSTR, REGSAM, HUSKEY, PHUSKEY, BOOL);
423 DWORD SHRegQueryInfoUSKeyA(HUSKEY, LPDWORD, LPDWORD, LPDWORD, LPDWORD, SHREGENUM_FLAGS);
424 DWORD SHRegQueryInfoUSKeyW(HUSKEY, LPDWORD, LPDWORD, LPDWORD, LPDWORD, SHREGENUM_FLAGS);
425 LONG SHRegQueryUSValueA(HUSKEY, LPCSTR, LPDWORD, LPVOID, LPDWORD, BOOL, LPVOID, DWORD);
426 LONG SHRegQueryUSValueW(HUSKEY, LPCWSTR, LPDWORD, LPVOID, LPDWORD, BOOL, LPVOID, DWORD);
427 DWORD SHRegSetPathA(HKEY, LPCSTR, LPCSTR, LPCSTR, DWORD);
428 DWORD SHRegSetPathW(HKEY, LPCWSTR, LPCWSTR, LPCWSTR, DWORD);
429 LONG SHRegSetUSValueA(LPCSTR, LPCSTR, DWORD, LPVOID, DWORD, DWORD);
430 LONG SHRegSetUSValueW(LPCWSTR, LPCWSTR, DWORD, LPVOID, DWORD, DWORD);
431 LONG SHRegWriteUSValueA(HUSKEY, LPCSTR, DWORD, LPVOID, DWORD, DWORD);
432 LONG SHRegWriteUSValueW(HUSKEY, LPCWSTR, DWORD, LPVOID, DWORD, DWORD);
433 HRESULT HashData(LPBYTE, DWORD, LPBYTE, DWORD);
434 HPALETTE SHCreateShellPalette(HDC);
435 COLORREF ColorHLSToRGB(WORD, WORD, WORD);
436 COLORREF ColorAdjustLuma(COLORREF, int, BOOL);
437 void ColorRGBToHLS(COLORREF, WORD*, WORD*, WORD*);
438 /** Should not be necessary for D?
439 extern (C):
440 int  wnsprintfA(LPSTR, int, LPCSTR, ...);
441 int  wnsprintfW(LPWSTR, int, LPCWSTR, ...);
442 extern (Windows):
443 int wvnsprintfA(LPSTR, int, LPCSTR, va_list);
444 int wvnsprintfW(LPWSTR, int, LPCWSTR, va_list);
445 */
446 
447 HINSTANCE MLLoadLibraryA(LPCSTR, HANDLE, DWORD, LPCSTR, BOOL);
448 HINSTANCE MLLoadLibraryW(LPCWSTR, HANDLE, DWORD, LPCWSTR, BOOL);
449 
450 HRESULT DllInstall(BOOL, LPCWSTR);
451 
452 HRESULT StrRetToBufA(LPSTRRET, LPCITEMIDLIST, LPSTR, UINT);
453 HRESULT StrRetToBufW(LPSTRRET, LPCITEMIDLIST, LPWSTR, UINT);
454 HRESULT StrRetToStrA(LPSTRRET, LPCITEMIDLIST, LPSTR*);
455 HRESULT StrRetToStrW(LPSTRRET, LPCITEMIDLIST, LPWSTR*);
456 HRESULT SHCreateStreamOnFileA(LPCSTR, DWORD, IStream*);
457 HRESULT SHCreateStreamOnFileW(LPCWSTR, DWORD, IStream*);
458 IStream SHOpenRegStream2A(HKEY, LPCSTR, LPCSTR, DWORD);
459 IStream SHOpenRegStream2W(HKEY, LPCWSTR, LPCWSTR, DWORD);
460 IStream SHOpenRegStreamA(HKEY, LPCSTR, LPCSTR, DWORD);
461 IStream SHOpenRegStreamW(HKEY, LPCWSTR, LPCWSTR, DWORD);
462 
463 version (Unicode) {
464 alias ChrCmpIW ChrCmpI;
465 alias IntlStrEqNW IntlStrEqN;
466 alias IntlStrEqNIW IntlStrEqNI;
467 alias IntlStrEqWorkerW IntlStrEqWorker;
468 alias SHStrDupW SHStrDup;
469 alias StrCatW StrCat;
470 alias StrCatBuffW StrCatBuff;
471 alias StrChrW StrChr;
472 alias StrChrIW StrChrI;
473 alias StrCmpW StrCmp;
474 alias StrCmpIW StrCmpI;
475 alias StrCmpNIW StrCmpNI;
476 alias StrCmpNW StrCmpN;
477 alias StrCpyNW StrCpyN;
478 alias StrCpyW StrCpy;
479 alias StrCSpnIW StrCSpnI;
480 alias StrCSpnW StrCSpn;
481 alias StrDupW StrDup;
482 alias StrFormatByteSizeW StrFormatByteSize;
483 alias StrFormatKBSizeW StrFormatKBSize;
484 alias StrFromTimeIntervalW StrFromTimeInterval;
485 alias StrIsIntlEqualW StrIsIntlEqual;
486 alias StrNCatW StrNCat;
487 alias StrPBrkW StrPBrk;
488 alias StrRChrW StrRChr;
489 alias StrRChrIW StrRChrI;
490 alias StrRetToBufW StrRetToBuf;
491 alias StrRetToStrW StrRetToStr;
492 alias StrRStrIW StrRStrI;
493 alias StrSpnW StrSpn;
494 alias StrStrIW StrStrI;
495 alias StrStrW StrStr;
496 alias StrToIntW StrToInt;
497 alias StrToIntExW StrToIntEx;
498 alias StrTrimW StrTrim;
499 alias PathAddBackslashW PathAddBackslash;
500 alias PathAddExtensionW PathAddExtension;
501 alias PathAppendW PathAppend;
502 alias PathBuildRootW PathBuildRoot;
503 alias PathCanonicalizeW PathCanonicalize;
504 alias PathCombineW PathCombine;
505 alias PathCommonPrefixW PathCommonPrefix;
506 alias PathCompactPathW PathCompactPath;
507 alias PathCompactPathExW PathCompactPathEx;
508 alias PathCreateFromUrlW PathCreateFromUrl;
509 alias PathFileExistsW PathFileExists;
510 alias PathFindExtensionW PathFindExtension;
511 alias PathFindFileNameW PathFindFileName;
512 alias PathFindNextComponentW PathFindNextComponent;
513 alias PathFindOnPathW PathFindOnPath;
514 alias PathFindSuffixArrayW PathFindSuffixArray;
515 alias PathGetArgsW PathGetArgs;
516 alias PathGetCharTypeW PathGetCharType;
517 alias PathGetDriveNumberW PathGetDriveNumber;
518 alias PathIsContentTypeW PathIsContentType;
519 alias PathIsDirectoryEmptyW PathIsDirectoryEmpty;
520 alias PathIsDirectoryW PathIsDirectory;
521 alias PathIsFileSpecW PathIsFileSpec;
522 alias PathIsLFNFileSpecW PathIsLFNFileSpec;
523 alias PathIsNetworkPathW PathIsNetworkPath;
524 alias PathIsPrefixW PathIsPrefix;
525 alias PathIsRelativeW PathIsRelative;
526 alias PathIsRootW PathIsRoot;
527 alias PathIsSameRootW PathIsSameRoot;
528 alias PathIsSystemFolderW PathIsSystemFolder;
529 alias PathIsUNCServerShareW PathIsUNCServerShare;
530 alias PathIsUNCServerW PathIsUNCServer;
531 alias PathIsUNCW PathIsUNC;
532 alias PathIsURLW PathIsURL;
533 alias PathMakePrettyW PathMakePretty;
534 alias PathMakeSystemFolderW PathMakeSystemFolder;
535 alias PathMatchSpecW PathMatchSpec;
536 alias PathParseIconLocationW PathParseIconLocation;
537 alias PathQuoteSpacesW PathQuoteSpaces;
538 alias PathRelativePathToW PathRelativePathTo;
539 alias PathRemoveArgsW PathRemoveArgs;
540 alias PathRemoveBackslashW PathRemoveBackslash;
541 alias PathRemoveBlanksW PathRemoveBlanks;
542 alias PathRemoveExtensionW PathRemoveExtension;
543 alias PathRemoveFileSpecW PathRemoveFileSpec;
544 alias PathRenameExtensionW PathRenameExtension;
545 alias PathSearchAndQualifyW PathSearchAndQualify;
546 alias PathSetDlgItemPathW PathSetDlgItemPath;
547 alias PathSkipRootW PathSkipRoot;
548 alias PathStripPathW PathStripPath;
549 alias PathStripToRootW PathStripToRoot;
550 alias PathUndecorateW PathUndecorate;
551 alias PathUnExpandEnvStringsW PathUnExpandEnvStrings;
552 alias PathUnmakeSystemFolderW PathUnmakeSystemFolder;
553 alias PathUnquoteSpacesW PathUnquoteSpaces;
554 alias SHCreateStreamOnFileW SHCreateStreamOnFile;
555 alias SHOpenRegStreamW SHOpenRegStream;
556 alias SHOpenRegStream2W SHOpenRegStream2;
557 alias SHCopyKeyW SHCopyKey;
558 alias SHDeleteEmptyKeyW SHDeleteEmptyKey;
559 alias SHDeleteKeyW SHDeleteKey;
560 alias SHEnumKeyExW SHEnumKeyEx;
561 alias SHQueryInfoKeyW SHQueryInfoKey;
562 alias SHQueryValueExW SHQueryValueEx;
563 alias SHEnumValueW SHEnumValue;
564 alias SHGetValueW SHGetValue;
565 alias SHSetValueW SHSetValue;
566 alias SHDeleteValueW SHDeleteValue;
567 alias AssocQueryKeyW AssocQueryKey;
568 alias AssocQueryStringByKeyW AssocQueryStringByKey;
569 alias AssocQueryStringW AssocQueryString;
570 alias UrlApplySchemeW UrlApplyScheme;
571 alias UrlCanonicalizeW UrlCanonicalize;
572 alias UrlCombineW UrlCombine;
573 alias UrlCompareW UrlCompare;
574 alias UrlCreateFromPathW UrlCreateFromPath;
575 alias UrlEscapeW UrlEscape;
576 alias UrlGetLocationW UrlGetLocation;
577 alias UrlGetPartW UrlGetPart;
578 alias UrlHashW UrlHash;
579 alias UrlIsW UrlIs;
580 alias UrlIsFileUrlW UrlIsFileUrl;
581 alias UrlIsNoHistoryW UrlIsNoHistory;
582 alias UrlIsOpaqueW UrlIsOpaque;
583 alias UrlUnescapeW UrlUnescape;
584 alias UrlUnescapeInPlaceW UrlUnescapeInPlace;
585 alias SHRegCreateUSKeyW SHRegCreateUSKey;
586 alias SHRegDeleteEmptyUSKeyW SHRegDeleteEmptyUSKey;
587 alias SHRegDeleteUSValueW SHRegDeleteUSValue;
588 alias SHRegEnumUSKeyW SHRegEnumUSKey;
589 alias SHRegEnumUSValueW SHRegEnumUSValue;
590 alias SHRegGetBoolUSValueW SHRegGetBoolUSValue;
591 alias SHRegGetPathW SHRegGetPath;
592 alias SHRegGetUSValueW SHRegGetUSValue;
593 alias SHRegOpenUSKeyW SHRegOpenUSKey;
594 alias SHRegQueryInfoUSKeyW SHRegQueryInfoUSKey;
595 alias SHRegQueryUSValueW SHRegQueryUSValue;
596 alias SHRegSetPathW SHRegSetPath;
597 alias SHRegSetUSValueW SHRegSetUSValue;
598 alias SHRegWriteUSValueW SHRegWriteUSValue;
599 //alias wnsprintfW wnsprintf;
600 //alias wvnsprintfW wvnsprintf;
601 } else {
602 alias ChrCmpIA ChrCmpI;
603 alias IntlStrEqNA IntlStrEqN;
604 alias IntlStrEqNIA IntlStrEqNI;
605 alias IntlStrEqWorkerA IntlStrEqWorker;
606 alias SHStrDupA SHStrDup;
607 alias StrCatBuffA StrCatBuff;
608 alias StrChrA StrChr;
609 alias StrChrIA StrChrI;
610 alias StrCmpNIA StrCmpNI;
611 alias StrCmpNA StrCmpN;
612 alias StrCSpnIA StrCSpnI;
613 alias StrCSpnA StrCSpn;
614 alias StrDupA StrDup;
615 alias StrFormatByteSizeA StrFormatByteSize;
616 alias StrFormatKBSizeA StrFormatKBSize;
617 alias StrFromTimeIntervalA StrFromTimeInterval;
618 alias StrIsIntlEqualA StrIsIntlEqual;
619 alias StrNCatA StrNCat;
620 alias StrPBrkA StrPBrk;
621 alias StrRChrA StrRChr;
622 alias StrRChrIA StrRChrI;
623 alias StrRetToBufA StrRetToBuf;
624 alias StrRetToStrA StrRetToStr;
625 alias StrRStrIA StrRStrI;
626 alias StrSpnA StrSpn;
627 alias StrStrIA StrStrI;
628 alias StrStrA StrStr;
629 alias StrToIntA StrToInt;
630 alias StrToIntExA StrToIntEx;
631 alias StrTrimA StrTrim;
632 alias PathAddBackslashA PathAddBackslash;
633 alias PathAddExtensionA PathAddExtension;
634 alias PathAppendA PathAppend;
635 alias PathBuildRootA PathBuildRoot;
636 alias PathCanonicalizeA PathCanonicalize;
637 alias PathCombineA PathCombine;
638 alias PathCommonPrefixA PathCommonPrefix;
639 alias PathCompactPathA PathCompactPath;
640 alias PathCompactPathExA PathCompactPathEx;
641 alias PathCreateFromUrlA PathCreateFromUrl;
642 alias PathFileExistsA PathFileExists;
643 alias PathFindExtensionA PathFindExtension;
644 alias PathFindFileNameA PathFindFileName;
645 alias PathFindNextComponentA PathFindNextComponent;
646 alias PathFindOnPathA PathFindOnPath;
647 alias PathFindSuffixArrayA PathFindSuffixArray;
648 alias PathGetArgsA PathGetArgs;
649 alias PathGetCharTypeA PathGetCharType;
650 alias PathGetDriveNumberA PathGetDriveNumber;
651 alias PathIsContentTypeA PathIsContentType;
652 alias PathIsDirectoryEmptyA PathIsDirectoryEmpty;
653 alias PathIsDirectoryA PathIsDirectory;
654 alias PathIsFileSpecA PathIsFileSpec;
655 alias PathIsLFNFileSpecA PathIsLFNFileSpec;
656 alias PathIsNetworkPathA PathIsNetworkPath;
657 alias PathIsPrefixA PathIsPrefix;
658 alias PathIsRelativeA PathIsRelative;
659 alias PathIsRootA PathIsRoot;
660 alias PathIsSameRootA PathIsSameRoot;
661 alias PathIsSystemFolderA PathIsSystemFolder;
662 alias PathIsUNCServerShareA PathIsUNCServerShare;
663 alias PathIsUNCServerA PathIsUNCServer;
664 alias PathIsUNCA PathIsUNC;
665 alias PathIsURLA PathIsURL;
666 alias PathMakePrettyA PathMakePretty;
667 alias PathMakeSystemFolderA PathMakeSystemFolder;
668 alias PathMatchSpecA PathMatchSpec;
669 alias PathParseIconLocationA PathParseIconLocation;
670 alias PathQuoteSpacesA PathQuoteSpaces;
671 alias PathRelativePathToA PathRelativePathTo;
672 alias PathRemoveArgsA PathRemoveArgs;
673 alias PathRemoveBackslashA PathRemoveBackslash;
674 alias PathRemoveBlanksA PathRemoveBlanks;
675 alias PathRemoveExtensionA PathRemoveExtension;
676 alias PathRemoveFileSpecA PathRemoveFileSpec;
677 alias PathRenameExtensionA PathRenameExtension;
678 alias PathSearchAndQualifyA PathSearchAndQualify;
679 alias PathSetDlgItemPathA PathSetDlgItemPath;
680 alias PathSkipRootA PathSkipRoot;
681 alias PathStripPathA PathStripPath;
682 alias PathStripToRootA PathStripToRoot;
683 alias PathUndecorateA PathUndecorate;
684 alias PathUnExpandEnvStringsA PathUnExpandEnvStrings;
685 alias PathUnmakeSystemFolderA PathUnmakeSystemFolder;
686 alias PathUnquoteSpacesA PathUnquoteSpaces;
687 alias SHCreateStreamOnFileA SHCreateStreamOnFile;
688 alias SHOpenRegStreamA SHOpenRegStream;
689 alias SHOpenRegStream2A SHOpenRegStream2;
690 alias SHCopyKeyA SHCopyKey;
691 alias SHDeleteEmptyKeyA SHDeleteEmptyKey;
692 alias SHDeleteKeyA SHDeleteKey;
693 alias SHEnumKeyExA SHEnumKeyEx;
694 alias SHQueryInfoKeyA SHQueryInfoKey;
695 alias SHQueryValueExA SHQueryValueEx;
696 alias SHEnumValueA SHEnumValue;
697 alias SHGetValueA SHGetValue;
698 alias SHSetValueA SHSetValue;
699 alias SHDeleteValueA SHDeleteValue;
700 alias AssocQueryKeyA AssocQueryKey;
701 alias AssocQueryStringByKeyA AssocQueryStringByKey;
702 alias AssocQueryStringA AssocQueryString;
703 alias UrlApplySchemeA UrlApplyScheme;
704 alias UrlCanonicalizeA UrlCanonicalize;
705 alias UrlCombineA UrlCombine;
706 alias UrlCompareA UrlCompare;
707 alias UrlCreateFromPathA UrlCreateFromPath;
708 alias UrlEscapeA UrlEscape;
709 alias UrlGetLocationA UrlGetLocation;
710 alias UrlGetPartA UrlGetPart;
711 alias UrlHashA UrlHash;
712 alias UrlIsA UrlIs;
713 alias UrlIsNoHistoryA UrlIsNoHistory;
714 alias UrlIsOpaqueA UrlIsOpaque;
715 alias UrlUnescapeA UrlUnescape;
716 alias UrlUnescapeInPlaceA UrlUnescapeInPlace;
717 alias SHRegCreateUSKeyA SHRegCreateUSKey;
718 alias SHRegDeleteEmptyUSKeyA SHRegDeleteEmptyUSKey;
719 alias SHRegDeleteUSValueA SHRegDeleteUSValue;
720 alias SHRegEnumUSKeyA SHRegEnumUSKey;
721 alias SHRegEnumUSValueA SHRegEnumUSValue;
722 alias SHRegGetBoolUSValueA SHRegGetBoolUSValue;
723 alias SHRegGetPathA SHRegGetPath;
724 alias SHRegGetUSValueA SHRegGetUSValue;
725 alias SHRegOpenUSKeyA SHRegOpenUSKey;
726 alias SHRegQueryInfoUSKeyA SHRegQueryInfoUSKey;
727 alias SHRegQueryUSValueA SHRegQueryUSValue;
728 alias SHRegSetPathA SHRegSetPath;
729 alias SHRegSetUSValueA SHRegSetUSValue;
730 alias SHRegWriteUSValueA SHRegWriteUSValue;
731 //alias wnsprintfA wnsprintf;
732 //alias wvnsprintfA wvnsprintf;
733 }
734 
735 alias StrToInt StrToLong;