- Implement HUSKEY design.
[wine] / include / shlwapi.h
1 #ifndef __WINE_SHLWAPI_H
2 #define __WINE_SHLWAPI_H
3
4 #include "objbase.h"
5
6 #ifdef __cplusplus
7 extern "C" {
8 #endif /* defined(__cplusplus) */
9
10
11 /* Mask returned by GetPathCharType */
12 #define GCT_INVALID     0x0000
13 #define GCT_LFNCHAR     0x0001
14 #define GCT_SHORTCHAR   0x0002
15 #define GCT_WILD        0x0004
16 #define GCT_SEPARATOR   0x0008
17
18 /*
19  * The URL_ defines were determined by trial and error.  If they become
20  * documented please check them and add the missing ones including:
21  *
22  * URL_ESCAPE_PERCENT
23  * URL_PLUGGABLE_PROTOCOL
24  * URL_DONT_ESCAPE_EXTRA_INFO
25  * URL_ESCAPE_SEGMENT_ONLY
26  */
27
28 #define URL_UNESCAPE_INPLACE         0x00100000
29 #define URL_DONT_UNESCAPE_EXTRA_INFO 0x02000000
30  
31 #define URL_ESCAPE_SPACES_ONLY       0x04000000
32
33 #define URL_UNESCAPE                 0x10000000
34 #define URL_ESCAPE_UNSAFE            0x20000000
35 #define URL_DONT_SIMPLIFY            0x40000000
36
37 LPSTR  WINAPI PathAddBackslashA(LPSTR path);    
38 LPWSTR WINAPI PathAddBackslashW(LPWSTR path);   
39 #define PathAddBackslash WINELIB_NAME_AW(PathAddBackslash)
40
41 BOOL WINAPI PathAddExtensionA(LPSTR pszPath, LPCSTR pszExt);
42 BOOL WINAPI PathAddExtensionW(LPWSTR pszPath, LPCWSTR pszExt);
43 #define PathAddExtension WINELIB_NAME_AW(PathAddExtension)
44
45 BOOL WINAPI PathAppendA(LPSTR lpszPath1,LPCSTR lpszPath2);
46 BOOL WINAPI PathAppendW(LPWSTR lpszPath1,LPCWSTR lpszPath2);
47 #define PathAppend WINELIB_NAME_AW(PathAppend)
48
49 LPSTR WINAPI PathBuildRootA(LPSTR lpszPath, int drive);
50 LPWSTR WINAPI PathBuildRootW(LPWSTR lpszPath, int drive);
51 #define PathBuildRoot WINELIB_NAME_AW(PathBuiltRoot)
52
53 BOOL WINAPI PathCanonicalizeA(LPSTR lpszDst, LPCSTR lpszSrc);
54 BOOL WINAPI PathCanonicalizeW(LPWSTR lpszDst, LPCWSTR lpszSrc);
55 #define PathCanonicalize WINELIB_NAME_AW(PathCanonicalize)
56
57 LPSTR  WINAPI PathCombineA(LPSTR szDest, LPCSTR lpszDir, LPCSTR lpszFile);
58 LPWSTR WINAPI PathCombineW(LPWSTR szDest, LPCWSTR lpszDir, LPCWSTR lpszFile);
59 #define PathCombine WINELIB_NAME_AW(PathCombine)
60
61 BOOL WINAPI PathFileExistsA(LPCSTR lpszPath);
62 BOOL WINAPI PathFileExistsW(LPCWSTR lpszPath);
63 #define PathFileExists WINELIB_NAME_AW(PathFileExists)
64
65 LPSTR WINAPI PathFindExtensionA(LPCSTR path);
66 LPWSTR WINAPI PathFindExtensionW(LPCWSTR path);
67 #define PathFindExtension WINELIB_NAME_AW(PathFindExtension)
68
69 LPSTR WINAPI PathFindFileNameA(LPCSTR pPath);
70 LPWSTR WINAPI PathFindFileNameW(LPCWSTR pPath);
71 #define PathFindFileName WINELIB_NAME_AW(PathFindFileName)
72
73 LPSTR WINAPI PathFindNextComponentA(LPCSTR pszPath);
74 LPWSTR WINAPI PathFindNextComponentW(LPCWSTR pszPath);
75 #define PathFindNextComponent WINELIB_NAME_AW(PathFindNextComponent)
76
77 BOOL WINAPI PathFindOnPathA(LPSTR sFile, LPCSTR sOtherDirs);
78 BOOL WINAPI PathFindOnPathW(LPWSTR sFile, LPCWSTR sOtherDirs);
79 #define PathFindOnPath WINELIB_NAME_AW(PathFindOnPath)
80
81 LPSTR WINAPI PathGetArgsA(LPCSTR lpszPath);
82 LPWSTR WINAPI PathGetArgsW(LPCWSTR lpszPath);
83 #define PathGetArgs WINELIB_NAME_AW(PathGetArgs)
84
85 int WINAPI PathGetDriveNumberA(LPCSTR lpszPath);
86 int WINAPI PathGetDriveNumberW(LPCWSTR lpszPath);
87 #define PathGetDriveNumber WINELIB_NAME_AW(PathGetDriveNumber)
88
89 BOOL WINAPI PathIsDirectoryA(LPCSTR lpszPath);
90 BOOL WINAPI PathIsDirectoryW(LPCWSTR lpszPath);
91 #define PathIsDirectory WINELIB_NAME_AW(PathIsDirectory)
92
93 BOOL WINAPI PathIsRelativeA(LPCSTR lpszPath);
94 BOOL WINAPI PathIsRelativeW(LPCWSTR lpszPath);
95 #define PathIsRelative WINELIB_NAME_AW(PathIsRelative)
96
97 BOOL WINAPI PathIsRootA(LPCSTR x);
98 BOOL WINAPI PathIsRootW(LPCWSTR x);
99 #define PathIsRoot WINELIB_NAME_AW(PathIsRoot)
100
101 BOOL WINAPI PathIsSameRootA(LPCSTR lpszPath1, LPCSTR lpszPath2);
102 BOOL WINAPI PathIsSameRootW(LPCWSTR lpszPath1, LPCWSTR lpszPath2);
103 #define PathIsSameRoot WINELIB_NAME_AW(PathIsSameRoot)
104
105 BOOL WINAPI PathIsUNCA(LPCSTR lpszPath);
106 BOOL WINAPI PathIsUNCW(LPCWSTR lpszPath);
107 #define PathIsUNC WINELIB_NAME_AW(PathIsUNC)
108
109 BOOL WINAPI PathIsURLA(LPCSTR pszPath);
110 BOOL WINAPI PathIsURLW(LPCWSTR pszPath);
111 #define PathIsURL WINELIB_NAME_AW(PathIsURL)
112
113 BOOL WINAPI PathMatchSpecA(LPCSTR lpszPath, LPCSTR lpszSpec);
114 BOOL WINAPI PathMatchSpecW(LPCWSTR lpszPath, LPCWSTR lpszSpec);
115 #define PathMatchSpec WINELIB_NAME_AW(PathMatchSpec)
116
117 int WINAPI PathParseIconLocationA(LPSTR lpszPath);
118 int WINAPI PathParseIconLocationW(LPWSTR lpszPath);
119 #define PathParseIconLocation WINELIB_NAME_AW(PathParseIconLocation)
120
121 LPSTR  WINAPI PathQuoteSpacesA(LPSTR path);     
122 LPWSTR WINAPI PathQuoteSpacesW(LPWSTR path);    
123 #define PathQuoteSpaces WINELIB_NAME_AW(PathQuoteSpaces)
124
125 void WINAPI PathRemoveArgsA(LPSTR lpszPath);
126 void WINAPI PathRemoveArgsW(LPWSTR lpszPath);
127 #define PathRemoveArgs WINELIB_NAME_AW(PathRemoveArgs)
128
129 LPSTR WINAPI PathRemoveBackslashA(LPSTR lpszPath);
130 LPWSTR WINAPI PathRemoveBackslashW(LPWSTR lpszPath);
131 #define PathRemoveBackslash WINELIB_NAME_AW(PathRemoveBackslash)
132
133 void WINAPI PathRemoveBlanksA(LPSTR lpszPath);
134 void WINAPI PathRemoveBlanksW(LPWSTR lpszPath);
135 #define PathRemoveBlanks WINELIB_NAME_AW(PathRemoveBlanks)
136
137 void WINAPI PathRemoveExtensionA(LPSTR lpszPath);
138 void WINAPI PathRemoveExtensionW(LPWSTR lpszPath);
139 #define PathRemoveExtension WINELIB_NAME_AW(PathRemoveExtension)
140
141 BOOL WINAPI PathRemoveFileSpecA(LPSTR lpszPath);
142 BOOL WINAPI PathRemoveFileSpecW(LPWSTR lpszPath);
143 #define PathRemoveFileSpec WINELIB_NAME_AW(PathRemoveFileSpec)
144
145 BOOL WINAPI PathSetDlgItemPathA(HWND hDlg, int id, LPCSTR pszPath);
146 BOOL WINAPI PathSetDlgItemPathW(HWND hDlg, int id, LPCWSTR pszPath);
147 #define PathSetDlgItemPath WINELIB_NAME_AW(PathSetDlgItemPath)
148
149 void WINAPI PathStripPathA(LPSTR lpszPath);
150 void WINAPI PathStripPathW(LPWSTR lpszPath);
151 #define PathStripPath WINELIB_NAME_AW(PathStripPath)
152
153 BOOL WINAPI PathStripToRootA(LPSTR pszPath);
154 BOOL WINAPI PathStripToRootW(LPWSTR pszPath);
155 #define PathStripToRoot WINELIB_NAME_AW(PathStripToRoot)
156
157 void WINAPI PathUnquoteSpacesA(LPSTR str);
158 void WINAPI PathUnquoteSpacesW(LPWSTR str);
159 #define PathUnquoteSpaces WINELIB_NAME_AW(PathUnquoteSpaces)
160
161
162 INT WINAPI StrCSpnA(LPCSTR lpStr, LPCSTR lpSet);
163 INT WINAPI StrCSpnW(LPCWSTR lpStr, LPCWSTR lpSet);
164 #define StrCSpn WINELIB_NAME_AW(StrCSpn)
165
166 INT WINAPI StrCSpnIA(LPCSTR lpStr, LPCSTR lpSet);
167 INT WINAPI StrCSpnIW(LPCWSTR lpStr, LPCWSTR lpSet);
168 #define StrCSpnI WINELIB_NAME_AW(StrCSpnI)
169
170 #define StrCatA lstrcatA
171 LPWSTR WINAPI StrCatW(LPWSTR front, LPCWSTR back);
172 #define StrCat WINELIB_NAME_AW(StrCat)
173
174 LPSTR WINAPI StrCatBuffA(LPSTR front, LPCSTR back, INT size);
175 LPWSTR WINAPI StrCatBuffW(LPWSTR front, LPCWSTR back, INT size);
176 #define StrCatBuff WINELIB_NAME_AW(StrCatBuff)
177
178 LPSTR WINAPI StrChrA(LPCSTR lpStart, WORD wMatch);
179 LPWSTR WINAPI StrChrW(LPCWSTR lpStart, WCHAR wMatch); 
180 #define StrChr WINELIB_NAME_AW(StrChr)
181
182 LPSTR WINAPI StrChrIA(LPCSTR lpStart, WORD wMatch);
183 LPWSTR WINAPI StrChrIW(LPCWSTR lpStart, WCHAR wMatch); 
184 #define StrChrI WINELIB_NAME_AW(StrChrI)
185
186 INT WINAPI StrCmpNA(LPCSTR lpStr1, LPCSTR lpStr2, INT nChar);
187 INT WINAPI StrCmpNW(LPCWSTR lpStr1, LPCWSTR lpStr2, INT nChar);
188 #define StrCmpN WINELIB_NAME_AW(StrCmpN)
189
190 INT WINAPI StrCmpNIA(LPCSTR lpStr1, LPCSTR lpStr2, INT nChar);
191 INT WINAPI StrCmpNIW(LPCWSTR lpStr1, LPCWSTR lpStr2, INT nChar);
192 #define StrCmpNI WINELIB_NAME_AW(StrCmpNI)
193
194 LPSTR WINAPI StrDupA(LPCSTR lpSrc);
195 LPWSTR WINAPI StrDupW(LPCWSTR lpSrc);
196 #define StrDup WINELIB_NAME_AW(StrDup)
197
198 LPSTR WINAPI StrFormatByteSizeA ( DWORD dw, LPSTR pszBuf, UINT cchBuf );
199 LPWSTR WINAPI StrFormatByteSizeW ( DWORD dw, LPWSTR pszBuf, UINT cchBuf );
200 #define StrFormatByteSize WINELIB_NAME_AW(StrFormatByteSize)
201
202 INT WINAPI wvnsprintfA(LPSTR lpOut, INT cchLimitIn, LPCSTR lpFmt, va_list arglist);
203 INT WINAPI wvnsprintfW(LPWSTR lpOut, INT cchLimitIn, LPCWSTR lpFmt, va_list arglist);
204 #define wvnsprintf WINELIB_NAME_AW(wvnsprintf)
205
206 INT WINAPIV wnsprintfA(LPSTR lpOut, INT cchLimitIn, LPCSTR lpFmt, ...);
207 INT WINAPIV wnsprintfW(LPWSTR lpOut, INT cchLimitIn, LPCWSTR lpFmt, ...);
208 #define wnsprintf WINELIB_NAME_AW(wnsprintf)
209
210
211 struct _STRRET;
212 struct _ITEMIDLIST;
213 HRESULT WINAPI StrRetToBufA(struct _STRRET *src, const struct _ITEMIDLIST *pidl, LPSTR dest, DWORD len);
214 HRESULT WINAPI StrRetToBufW(struct _STRRET *src, const struct _ITEMIDLIST *pidl, LPWSTR dest, DWORD len);
215 #define StrRetToBuf WINELIB_NAME_AW(StrRetToBuf)
216
217
218 /* Shell Registry interfaces */
219
220 HRESULT WINAPI SHQueryValueExA(HKEY hkey, LPSTR lpValueName, LPDWORD lpReserved, LPDWORD lpType, LPBYTE lpData, LPDWORD lpcbData);
221 HRESULT WINAPI SHQueryValueExW(HKEY hkey, LPWSTR pszValue, LPDWORD pdwReserved, LPDWORD pdwType, LPVOID pvData, LPDWORD pcbData);
222 #define SHQueryValueEx WINELIB_NAME_AW(SHQueryValueEx)
223
224 HRESULT WINAPI SHDeleteKeyA(HKEY hKey, LPCSTR lpszSubKey);
225 HRESULT WINAPI SHDeleteKeyW(HKEY hkey, LPCWSTR pszSubKey);
226 #define  SHDeleteKey WINELIB_NAME_AW(SHDeleteKey)
227
228 DWORD WINAPI SHDeleteEmptyKeyA(HKEY hKey, LPCSTR lpszSubKey);
229 DWORD WINAPI SHDeleteEmptyKeyW(HKEY hKey, LPCWSTR lpszSubKey);
230 #define  SHDeleteEmptyKey WINELIB_NAME_AW(SHDeleteEmptyKey)
231
232
233 typedef HANDLE HUSKEY;
234 typedef HUSKEY *PHUSKEY;
235
236 typedef enum {
237     SHREGDEL_DEFAULT = 0,   /* delete HKCU if found or HKLM if not */
238     SHREGDEL_HKCU = 0x01,   /* delete HKCU */
239     SHREGDEL_HKLM = 0x10,   /* delete HKLM */
240     SHREGDEL_BOTH = 0x11,   /* delete HKCU *and* HKLM */
241 } SHREGDEL_FLAGS; 
242
243 typedef enum {
244     SHREGENUM_DEFAULT = 0,  /* do HKCU or HKLM if not found */
245     SHREGENUM_HKCU = 0x01,  /* do HKCU only  */
246     SHREGENUM_HKLM = 0x10,  /* do HKLM only  */
247     SHREGENUM_BOTH = 0x11,  /* do both HKCU and HKLM without dups */
248 } SHREGENUM_FLAGS; 
249
250
251
252 HRESULT WINAPI UrlCanonicalizeA(LPCSTR pszUrl, LPSTR pszCanonicalized, 
253                                 LPDWORD pcchCanonicalized, DWORD dwFlags);
254 HRESULT WINAPI UrlCanonicalizeW(LPCWSTR pszUrl, LPWSTR pszCanonicalized, 
255                                 LPDWORD pcchCanonicalized, DWORD dwFlags);
256 #define UrlCanonicalize WINELIB_NAME_AW(UrlCanoncalize)
257
258 HRESULT WINAPI UrlEscapeA(LPCSTR pszUrl, LPSTR pszEscaped, LPDWORD pcchEscaped,
259                           DWORD dwFlags);
260 HRESULT WINAPI UrlEscapeW(LPCWSTR pszUrl, LPWSTR pszEscaped,
261                           LPDWORD pcchEscaped, DWORD dwFlags);
262 #define UrlEscape WINELIB_NAME_AW(UrlEscape)
263
264 HRESULT WINAPI UrlUnescapeA(LPCSTR pszUrl, LPSTR pszUnescaped,
265                             LPDWORD pcchUnescaped, DWORD dwFlags);
266 HRESULT WINAPI UrlUnescapeW(LPCWSTR pszUrl, LPWSTR pszUnescaped,
267                             LPDWORD pcchUnescaped, DWORD dwFlags);
268 #define UrlUnescape WINELIB_AW_NAME(UrlUnescape)
269
270 typedef struct _DllVersionInfo {
271     DWORD cbSize;
272     DWORD dwMajorVersion;
273     DWORD dwMinorVersion;
274     DWORD dwBuildNumber;
275     DWORD dwPlatformID;
276 } DLLVERSIONINFO;
277
278 #define DLLVER_PLATFORM_WINDOWS         0x00000001      // Windows 9x
279 #define DLLVER_PLATFORM_NT              0x00000002      // Windows NT
280
281 typedef HRESULT CALLBACK (*DLLGETVERSIONPROC)(DLLVERSIONINFO *);
282
283 #ifdef __cplusplus
284 } /* extern "C" */
285 #endif /* defined(__cplusplus) */
286
287 #endif /* __WINE_SHLWAPI_H */