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_2 [SHLWAPI.2]
41 DWORD WINAPI SHLWAPI_2 (LPCWSTR x,LPVOID y)
43 FIXME("(%s,%p)\n",debugstr_w(x),y);
47 /*************************************************************************
48 * SHLWAPI_16 [SHLWAPI.16]
50 HRESULT WINAPI SHLWAPI_16 (
56 FIXME("(%p %p %p %p)stub\n",w,x,y,z);
60 /*************************************************************************
61 * SHLWAPI_23 [SHLWAPI.23]
64 * converts a guid to a string
67 DWORD WINAPI SHLWAPI_23 (
68 REFGUID guid, /* [in] clsid */
69 LPSTR str, /* [out] buffer */
70 INT cmax) /* [in] size of buffer */
74 sprintf( xguid, "{%08lx-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}",
75 guid->Data1, guid->Data2, guid->Data3,
76 guid->Data4[0], guid->Data4[1], guid->Data4[2], guid->Data4[3],
77 guid->Data4[4], guid->Data4[5], guid->Data4[6], guid->Data4[7] );
78 TRACE("(%s %p 0x%08x)stub\n", xguid, str, cmax);
79 if (strlen(xguid)>=cmax) return 0;
81 return strlen(xguid) + 1;
84 /*************************************************************************
85 * SHLWAPI_24 [SHLWAPI.24]
88 * converts a guid to a string
91 DWORD WINAPI SHLWAPI_24 (
92 REFGUID guid, /* [in] clsid */
93 LPWSTR str, /* [out] buffer */
94 INT cmax) /* [in] size of buffer */
98 sprintf( xguid, "{%08lx-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}",
99 guid->Data1, guid->Data2, guid->Data3,
100 guid->Data4[0], guid->Data4[1], guid->Data4[2], guid->Data4[3],
101 guid->Data4[4], guid->Data4[5], guid->Data4[6], guid->Data4[7] );
102 return MultiByteToWideChar( CP_ACP, 0, xguid, -1, str, cmax );
105 /*************************************************************************
106 * SHLWAPI_38 [SHLWAPI.38]
109 DWORD WINAPI SHLWAPI_38 ( DWORD x) {
110 FIXME("(%lx),stub!\n",x);
113 /*************************************************************************
116 DWORD WINAPI SHLWAPI_137(
119 FIXME("(%#x)stub\n", what);
122 /*************************************************************************
125 DWORD WINAPI SHLWAPI_141( LPVOID ptr, DWORD x , LPVOID ptr2)
127 FIXME("(%p,%ld,%p), stub\n", ptr,x,ptr2);
130 /*************************************************************************
131 * SHLWAPI_151 [SHLWAPI.151]
133 DWORD WINAPI SHLWAPI_151(void)
139 /*************************************************************************
140 * SHLWAPI_153 [SHLWAPI.153]
142 DWORD WINAPI SHLWAPI_153(DWORD dw1, DWORD dw2, DWORD dw3)
144 FIXME("%08lx %08lx %08lx - stub\n", dw1, dw2, dw3);
148 /*************************************************************************
149 * SHLWAPI_156 [SHLWAPI.156]
151 * FIXME: function guessed
153 DWORD WINAPI SHLWAPI_156 (
154 LPWSTR str1, /* [???] NOTE: "shell32.dll" */
155 LPWSTR str2) /* [???] NOTE: "shell32.dll" */
157 FIXME("(%s %s)stub\n",debugstr_w(str1),debugstr_w(str2));
158 return lstrcmpW(str1,str2);
161 /*************************************************************************
162 * SHLWAPI_169 [SHLWAPI.169]
164 DWORD WINAPI SHLWAPI_169 (IUnknown * lpUnknown)
166 TRACE("(%p)\n",lpUnknown);
168 if(!lpUnknown || !*((LPDWORD)lpUnknown)) return 0;
169 return IUnknown_Release(lpUnknown);
174 /*************************************************************************
175 * SHLWAPI_193 [SHLWAPI.193]
177 DWORD WINAPI SHLWAPI_193 ()
185 ret = GetDeviceCaps(hdc, BITSPIXEL) * GetDeviceCaps(hdc, PLANES);
190 /*************************************************************************
191 * SHLWAPI_215 [SHLWAPI.215]
196 LPWSTR WINAPI SHLWAPI_215 (
201 WARN("(%p %p %u)\n",lpStrSrc,lpwStrDest,len);
202 return strncpyW(lpwStrDest, lpStrSrc, len);
205 /*************************************************************************
206 * SHLWAPI_219 [SHLWAPI.219]
209 * error codes: E_POINTER, E_NOINTERFACE
211 HRESULT WINAPI SHLWAPI_219 (
212 LPVOID w, /* [???] NOTE: returned by LocalAlloc, 0x450 bytes, iface */
215 LPWSTR z) /* [???] NOTE: OUT: path */
217 FIXME("(%p %p %p %p)stub\n",w,x,y,z);
221 /*************************************************************************
222 * SHLWAPI_222 [SHLWAPI.222]
225 * securityattributes missing
227 HANDLE WINAPI SHLWAPI_222 (LPCLSID guid)
231 sprintf( lpstrName, "shell.{%08lx-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}",
232 guid->Data1, guid->Data2, guid->Data3,
233 guid->Data4[0], guid->Data4[1], guid->Data4[2], guid->Data4[3],
234 guid->Data4[4], guid->Data4[5], guid->Data4[6], guid->Data4[7] );
235 FIXME("(%s) stub\n", lpstrName);
236 return CreateSemaphoreA(NULL,0, 0x7fffffff, lpstrName);
239 /*************************************************************************
240 * SHLWAPI_223 [SHLWAPI.223]
243 * get the count of the semaphore
245 DWORD WINAPI SHLWAPI_223 (HANDLE handle)
249 FIXME("(0x%08x) stub\n",handle);
251 ReleaseSemaphore( handle, 1, &oldCount); /* +1 */
252 WaitForSingleObject( handle, 0 ); /* -1 */
256 /*************************************************************************
257 * SHLWAPI_237 [SHLWAPI.237]
260 * checks if a class is registered, if not it registers it
262 DWORD WINAPI SHLWAPI_237 (WNDCLASSW * lpWndClass)
266 TRACE("(0x%08x %s)\n",lpWndClass->hInstance, debugstr_w(lpWndClass->lpszClassName));
268 if (!GetClassInfoW(lpWndClass->hInstance, lpWndClass->lpszClassName, &WndClass))
270 return RegisterClassW(lpWndClass);
275 /*************************************************************************
276 * SHLWAPI_241 [SHLWAPI.241]
279 DWORD WINAPI SHLWAPI_241 ()
285 /*************************************************************************
286 * SHLWAPI_266 [SHLWAPI.266]
288 DWORD WINAPI SHLWAPI_266 (
294 FIXME("(%p %p %p %p)stub\n",w,x,y,z);
298 /*************************************************************************
299 * SHLWAPI_267 [SHLWAPI.267]
301 HRESULT WINAPI SHLWAPI_267 (
302 LPVOID w, /* [???] NOTE: same as 1th parameter of SHLWAPI_219 */
303 LPVOID x, /* [???] NOTE: same as 2nd parameter of SHLWAPI_219 */
307 FIXME("(%p %p %p %p)stub\n",w,x,y,z);
308 *((LPDWORD)z) = 0xabba1200;
312 /*************************************************************************
313 * SHLWAPI_268 [SHLWAPI.268]
315 DWORD WINAPI SHLWAPI_268 (
319 FIXME("(%p %p)\n",w,x);
320 return 0xabba1251; /* 0 = failure */
323 /*************************************************************************
324 * SHLWAPI_276 [SHLWAPI.276]
327 DWORD WINAPI SHLWAPI_276 ()
333 /*************************************************************************
334 * SHLWAPI_278 [SHLWAPI.278]
337 DWORD WINAPI SHLWAPI_278 (
348 char * clsname = "WorkerA";
350 FIXME("(0x%08lx 0x%08x 0x%08lx 0x%08lx 0x%08x 0x%08lx)stub\n",
351 wndProc,hWndParent,dwExStyle,dwStyle,hMenu,z);
353 hCursor = LoadCursorA(0x00000000,IDC_ARROWA);
355 if(!GetClassInfoA(shlwapi_hInstance, clsname, &wndclass))
357 RtlZeroMemory(&wndclass, sizeof(WNDCLASSA));
358 wndclass.lpfnWndProc = DefWindowProcW;
359 wndclass.cbWndExtra = 4;
360 wndclass.hInstance = shlwapi_hInstance;
361 wndclass.hCursor = hCursor;
362 wndclass.hbrBackground = COLOR_BTNSHADOW;
363 wndclass.lpszMenuName = NULL;
364 wndclass.lpszClassName = clsname;
365 RegisterClassA (&wndclass);
367 hwnd = CreateWindowExA(dwExStyle, clsname, 0,dwStyle,0,0,0,0,hWndParent,
368 hMenu,shlwapi_hInstance,0);
369 SetWindowLongA(hwnd, 0, z);
370 SetWindowLongA(hwnd, GWL_WNDPROC, wndProc);
374 /*************************************************************************
375 * SHLWAPI_342 [SHLWAPI.342]
378 DWORD WINAPI SHLWAPI_342 (
384 FIXME("(%p %p %p %p)stub\n",w,x,y,z);
388 /*************************************************************************
389 * SHLWAPI_346 [SHLWAPI.346]
391 DWORD WINAPI SHLWAPI_346 (
396 FIXME("(%s %p 0x%08x)stub\n",debugstr_w(src),dest,len);
397 lstrcpynW(dest, src, len);
398 return lstrlenW(dest)+1;
401 /*************************************************************************
402 * SHLWAPI_376 [SHLWAPI.377]
404 DWORD WINAPI SHLWAPI_376 (LONG x)
406 FIXME("(0x%08lx)stub\n", x );
410 /*************************************************************************
411 * SHLWAPI_377 [SHLWAPI.377]
413 DWORD WINAPI SHLWAPI_377 (LPVOID x, LPVOID y, LPVOID z)
415 FIXME("(%p %p %p)stub\n", x,y,z);
419 /*************************************************************************
420 * SHLWAPI_378 [SHLWAPI.378]
422 DWORD WINAPI SHLWAPI_378 (
424 LPVOID y, /* [???] 0x50000000 */
425 LPVOID z) /* [???] 4 */
427 FIXME("(%s %p %p)stub\n", x,y,z);
428 return LoadLibraryA(x);
431 /*************************************************************************
432 * SHLWAPI_431 [SHLWAPI.431]
434 DWORD WINAPI SHLWAPI_431 (DWORD x)
436 FIXME("(0x%08lx)stub\n", x);
440 /*************************************************************************
441 * SHLWAPI_437 [SHLWAPI.437]
444 * has to do something with switching the api between ascii and unicode
445 * observed values: 0 and 5
448 * HKLM\System\CurrentControlSet\Control\ProductOptions
451 DWORD WINAPI SHLWAPI_437 (DWORD x)
453 FIXME("(0x%08lx)stub\n", x);
457 /*************************************************************************
458 * UrlEscapeA [SHLWAPI]
460 HRESULT WINAPI UrlEscapeA(
466 FIXME("(%s %p %p 0x%08lx)stub\n",debugstr_a(pszUrl),
467 pszEscaped, pcchEscaped, dwFlags);
471 /*************************************************************************
472 * UrlEscapeW [SHLWAPI]
474 HRESULT WINAPI UrlEscapeW(
480 FIXME("(%s %p %p 0x%08lx)stub\n",debugstr_w(pszUrl),
481 pszEscaped, pcchEscaped, dwFlags);
486 /*************************************************************************
487 * SHCreateShellPalette [SHLWAPI.@]
489 HPALETTE WINAPI SHCreateShellPalette(HDC hdc)
492 return CreateHalftonePalette(hdc);
495 /*************************************************************************
498 DWORD WINAPI SHGetInverseCMAP (LPVOID x, DWORD why)
500 FIXME("(%p, %#lx)stub\n", x, why);
503 /*************************************************************************
504 * SHIsLowMemoryMachine [SHLWAPI.@]
506 DWORD WINAPI SHIsLowMemoryMachine (DWORD x)
508 FIXME("0x%08lx\n", x);