2 * SHLWAPI ordinal functions
4 * Copyright 1997 Marcus Meissner
11 #include "wine/undocshell.h"
12 #include "wine/unicode.h"
13 #include "debugtools.h"
15 DEFAULT_DEBUG_CHANNEL(shell
);
17 extern HINSTANCE shlwapi_hInstance
;
20 NOTES: The most functions exported by ordinal seem to be superflous.
21 The reason for these functions to be there is to provide a wraper
22 for unicode functions to providing these functions on systems without
23 unicode functions eg. win95/win98. Since we have such functions we just
27 /*************************************************************************
28 * SHLWAPI_1 [SHLWAPI.1]
30 DWORD WINAPI
SHLWAPI_1 (
34 FIXME("(%p %s %p %s)\n",lpStr
, debugstr_a(lpStr
),x
, debugstr_a(x
));
38 /*************************************************************************
39 * SHLWAPI_16 [SHLWAPI.16]
41 HRESULT WINAPI
SHLWAPI_16 (
47 FIXME("(%p %p %p %p)stub\n",w
,x
,y
,z
);
51 /*************************************************************************
52 * SHLWAPI_23 [SHLWAPI.23]
55 * converts a guid to a string
58 DWORD WINAPI
SHLWAPI_23 (
59 REFGUID guid
, /* [in] clsid */
60 LPSTR str
, /* [out] buffer */
61 INT cmax
) /* [in] size of buffer */
65 sprintf( xguid
, "{%08lx-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}",
66 guid
->Data1
, guid
->Data2
, guid
->Data3
,
67 guid
->Data4
[0], guid
->Data4
[1], guid
->Data4
[2], guid
->Data4
[3],
68 guid
->Data4
[4], guid
->Data4
[5], guid
->Data4
[6], guid
->Data4
[7] );
69 TRACE("(%s %p 0x%08x)stub\n", xguid
, str
, cmax
);
70 if (strlen(xguid
)>=cmax
) return 0;
72 return strlen(xguid
) + 1;
75 /*************************************************************************
76 * SHLWAPI_24 [SHLWAPI.24]
79 * converts a guid to a string
82 DWORD WINAPI
SHLWAPI_24 (
83 REFGUID guid
, /* [in] clsid */
84 LPWSTR str
, /* [out] buffer */
85 INT cmax
) /* [in] size of buffer */
89 sprintf( xguid
, "{%08lx-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}",
90 guid
->Data1
, guid
->Data2
, guid
->Data3
,
91 guid
->Data4
[0], guid
->Data4
[1], guid
->Data4
[2], guid
->Data4
[3],
92 guid
->Data4
[4], guid
->Data4
[5], guid
->Data4
[6], guid
->Data4
[7] );
93 return MultiByteToWideChar( CP_ACP
, 0, xguid
, -1, str
, cmax
);
96 /*************************************************************************
97 * SHLWAPI_151 [SHLWAPI.151]
99 DWORD WINAPI
SHLWAPI_151(void)
105 /*************************************************************************
106 * SHLWAPI_153 [SHLWAPI.153]
108 DWORD WINAPI
SHLWAPI_153(DWORD dw1
, DWORD dw2
, DWORD dw3
)
110 FIXME("%08lx %08lx %08lx - stub\n", dw1
, dw2
, dw3
);
114 /*************************************************************************
115 * SHLWAPI_156 [SHLWAPI.156]
117 * FIXME: function guessed
119 DWORD WINAPI
SHLWAPI_156 (
120 LPWSTR str1
, /* "shell32.dll" */
121 LPWSTR str2
) /* "shell32.dll" */
123 FIXME("(%s %s)stub\n",debugstr_w(str1
),debugstr_w(str2
));
124 return lstrcmpW(str1
,str2
);
127 /*************************************************************************
128 * SHLWAPI_169 [SHLWAPI.169]
130 DWORD WINAPI
SHLWAPI_169 (IUnknown
* lpUnknown
)
132 TRACE("(%p)\n",lpUnknown
);
134 if(!lpUnknown
|| !*((LPDWORD
)lpUnknown
)) return 0;
135 return IUnknown_Release(lpUnknown
);
140 /*************************************************************************
141 * SHLWAPI_193 [SHLWAPI.193]
143 DWORD WINAPI
SHLWAPI_193 ()
151 ret
= GetDeviceCaps(hdc
, BITSPIXEL
) * GetDeviceCaps(hdc
, PLANES
);
156 /*************************************************************************
157 * SHLWAPI_215 [SHLWAPI.215]
162 LPWSTR WINAPI
SHLWAPI_215 (
167 WARN("(%p %p %u)\n",lpStrSrc
,lpwStrDest
,len
);
168 return strncpyW(lpwStrDest
, lpStrSrc
, len
);
171 /*************************************************************************
172 * SHLWAPI_219 [SHLWAPI.219]
175 * error codes: E_POINTER, E_NOINTERFACE
177 HRESULT WINAPI
SHLWAPI_219 (
178 LPVOID w
, /* returned by LocalAlloc, 0x450 bytes, iface */
181 LPWSTR z
) /* OUT: path */
183 FIXME("(%p %p %p %p)stub\n",w
,x
,y
,z
);
187 /*************************************************************************
188 * SHLWAPI_222 [SHLWAPI.222]
191 * securityattributes missing
193 HANDLE WINAPI
SHLWAPI_222 (LPCLSID guid
)
197 sprintf( lpstrName
, "shell.{%08lx-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}",
198 guid
->Data1
, guid
->Data2
, guid
->Data3
,
199 guid
->Data4
[0], guid
->Data4
[1], guid
->Data4
[2], guid
->Data4
[3],
200 guid
->Data4
[4], guid
->Data4
[5], guid
->Data4
[6], guid
->Data4
[7] );
201 FIXME("(%s) stub\n", lpstrName
);
202 return CreateSemaphoreA(NULL
,0, 0x7fffffff, lpstrName
);
205 /*************************************************************************
206 * SHLWAPI_223 [SHLWAPI.223]
209 * get the count of the semaphore
211 DWORD WINAPI
SHLWAPI_223 (HANDLE handle
)
215 FIXME("(0x%08x) stub\n",handle
);
217 ReleaseSemaphore( handle
, 1, &oldCount
); /* +1 */
218 WaitForSingleObject( handle
, 0 ); /* -1 */
222 /*************************************************************************
223 * SHLWAPI_237 [SHLWAPI.237]
226 * checks if a class is registered, if not it registers it
228 DWORD WINAPI
SHLWAPI_237 (WNDCLASSW
* lpWndClass
)
232 TRACE("(0x%08x %s)\n",lpWndClass
->hInstance
, debugstr_w(lpWndClass
->lpszClassName
));
234 if (!GetClassInfoW(lpWndClass
->hInstance
, lpWndClass
->lpszClassName
, &WndClass
))
236 return RegisterClassW(lpWndClass
);
241 /*************************************************************************
242 * SHLWAPI_241 [SHLWAPI.241]
245 DWORD WINAPI
SHLWAPI_241 ()
251 /*************************************************************************
252 * SHLWAPI_266 [SHLWAPI.266]
254 DWORD WINAPI
SHLWAPI_266 (
260 FIXME("(%p %p %p %p)stub\n",w
,x
,y
,z
);
264 /*************************************************************************
265 * SHLWAPI_267 [SHLWAPI.267]
267 HRESULT WINAPI
SHLWAPI_267 (
268 LPVOID w
, /* same as 1th parameter of SHLWAPI_219 */
269 LPVOID x
, /* same as 2nd parameter of SHLWAPI_219 */
273 FIXME("(%p %p %p %p)stub\n",w
,x
,y
,z
);
274 *((LPDWORD
)z
) = 0xabba1200;
278 /*************************************************************************
279 * SHLWAPI_268 [SHLWAPI.268]
281 DWORD WINAPI
SHLWAPI_268 (
285 FIXME("(%p %p)\n",w
,x
);
286 return 0xabba1251; /* 0 = failure */
289 /*************************************************************************
290 * SHLWAPI_276 [SHLWAPI.276]
293 DWORD WINAPI
SHLWAPI_276 ()
299 /*************************************************************************
300 * SHLWAPI_278 [SHLWAPI.278]
303 DWORD WINAPI
SHLWAPI_278 (
314 char * clsname
= "WorkerA";
316 FIXME("(0x%08lx 0x%08x 0x%08lx 0x%08lx 0x%08x 0x%08lx)stub\n",
317 wndProc
,hWndParent
,dwExStyle
,dwStyle
,hMenu
,z
);
319 hCursor
= LoadCursorA(0x00000000,IDC_ARROWA
);
321 if(!GetClassInfoA(shlwapi_hInstance
, clsname
, &wndclass
))
323 RtlZeroMemory(&wndclass
, sizeof(WNDCLASSA
));
324 wndclass
.lpfnWndProc
= DefWindowProcW
;
325 wndclass
.cbWndExtra
= 4;
326 wndclass
.hInstance
= shlwapi_hInstance
;
327 wndclass
.hCursor
= hCursor
;
328 wndclass
.hbrBackground
= COLOR_BTNSHADOW
;
329 wndclass
.lpszMenuName
= NULL
;
330 wndclass
.lpszClassName
= clsname
;
331 RegisterClassA (&wndclass
);
333 hwnd
= CreateWindowExA(dwExStyle
, clsname
, 0,dwStyle
,0,0,0,0,hWndParent
,
334 hMenu
,shlwapi_hInstance
,0);
335 SetWindowLongA(hwnd
, 0, z
);
336 SetWindowLongA(hwnd
, GWL_WNDPROC
, wndProc
);
340 /*************************************************************************
341 * SHLWAPI_342 [SHLWAPI.342]
344 DWORD WINAPI
SHLWAPI_342 (
350 FIXME("(%p %p %p %p)stub\n",w
,x
,y
,z
);
354 /*************************************************************************
355 * SHLWAPI_346 [SHLWAPI.346]
357 DWORD WINAPI
SHLWAPI_346 (
362 FIXME("(%s %p 0x%08x)stub\n",debugstr_w(src
),dest
,len
);
363 lstrcpynW(dest
, src
, len
);
364 return lstrlenW(dest
)+1;
368 /*************************************************************************
369 * SHLWAPI_377 [SHLWAPI.377]
371 DWORD WINAPI
SHLWAPI_377 (LPVOID x
, LPVOID y
, LPVOID z
)
373 FIXME("(%p %p %p)stub\n", x
,y
,z
);
377 /*************************************************************************
378 * SHLWAPI_378 [SHLWAPI.378]
380 DWORD WINAPI
SHLWAPI_378 (
382 LPVOID y
, /* 0x50000000 */
385 FIXME("(%s %p %p)stub\n", x
,y
,z
);
386 return LoadLibraryA(x
);
389 /*************************************************************************
390 * SHLWAPI_431 [SHLWAPI.431]
392 DWORD WINAPI
SHLWAPI_431 (DWORD x
)
394 FIXME("(0x%08lx)stub\n", x
);
398 /*************************************************************************
399 * SHLWAPI_437 [SHLWAPI.437]
402 * has to do something with switching the api between ascii and unicode
403 * observed values: 0 and 5
406 * HKLM\System\CurrentControlSet\Control\ProductOptions
409 DWORD WINAPI
SHLWAPI_437 (DWORD x
)
411 FIXME("(0x%08lx)stub\n", x
);
415 /*************************************************************************
416 * UrlEscapeA [SHLWAPI]
418 HRESULT WINAPI
UrlEscapeA(
424 FIXME("(%s %p %p 0x%08lx)stub\n",debugstr_a(pszUrl
),
425 pszEscaped
, pcchEscaped
, dwFlags
);
429 /*************************************************************************
430 * UrlEscapeW [SHLWAPI]
432 HRESULT WINAPI
UrlEscapeW(
438 FIXME("(%s %p %p 0x%08lx)stub\n",debugstr_w(pszUrl
),
439 pszEscaped
, pcchEscaped
, dwFlags
);
444 /*************************************************************************
445 * SHCreateShellPalette [SHLWAPI.@]
447 HPALETTE WINAPI
SHCreateShellPalette(HDC hdc
)
450 return CreateHalftonePalette(hdc
);
453 /*************************************************************************
454 * SHIsLowMemoryMachine [SHLWAPI.@]
456 DWORD WINAPI
SHIsLowMemoryMachine (DWORD x
)
458 FIXME("0x%08lx\n", x
);