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);