2 * SHLWAPI ordinal functions
4 * Copyright 1997 Marcus Meissner
11 #include "wine/undocshell.h"
12 #include "debugtools.h"
14 DEFAULT_DEBUG_CHANNEL(shell);
16 extern HINSTANCE shlwapi_hInstance;
19 NOTES: The most functions exported by ordinal seem to be superflous.
20 The reason for these functions to be there is to provide a wraper
21 for unicode functions to providing these functions on systems without
22 unicode functions eg. win95/win98. Since we have such functions we just
26 /*************************************************************************
27 * SHLWAPI_1 [SHLWAPI.1]
29 DWORD WINAPI SHLWAPI_1 (
33 FIXME("(%p %s %p %s)\n",lpStr, debugstr_a(lpStr),x, debugstr_a(x));
37 /*************************************************************************
38 * SHLWAPI_16 [SHLWAPI.16]
40 HRESULT WINAPI SHLWAPI_16 (
46 FIXME("(%p %p %p %p)stub\n",w,x,y,z);
50 /*************************************************************************
51 * SHLWAPI_23 [SHLWAPI.23]
54 * converts a guid to a string
57 DWORD WINAPI SHLWAPI_23 (
58 REFGUID guid, /* [in] clsid */
59 LPSTR str, /* [out] buffer */
60 INT cmax) /* [in] size of buffer */
64 sprintf( xguid, "{%08lx-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}",
65 guid->Data1, guid->Data2, guid->Data3,
66 guid->Data4[0], guid->Data4[1], guid->Data4[2], guid->Data4[3],
67 guid->Data4[4], guid->Data4[5], guid->Data4[6], guid->Data4[7] );
68 TRACE("(%s %p 0x%08x)stub\n", xguid, str, cmax);
69 if (strlen(xguid)>=cmax) return 0;
71 return strlen(xguid) + 1;
74 /*************************************************************************
75 * SHLWAPI_24 [SHLWAPI.24]
78 * converts a guid to a string
81 DWORD WINAPI SHLWAPI_24 (
82 REFGUID guid, /* [in] clsid */
83 LPWSTR str, /* [out] buffer */
84 INT cmax) /* [in] size of buffer */
86 TRACE("(%s %p 0x%08x)stub\n", debugstr_guid(guid), str, cmax);
87 return StringFromGUID2(guid, str, cmax);
90 /*************************************************************************
91 * SHLWAPI_156 [SHLWAPI.156]
93 * FIXME: function guessed
95 DWORD WINAPI SHLWAPI_156 (
96 LPWSTR str1, /* "shell32.dll" */
97 LPWSTR str2) /* "shell32.dll" */
99 FIXME("(%s %s)stub\n",debugstr_w(str1),debugstr_w(str2));
100 return lstrcmpW(str1,str2);
103 /*************************************************************************
104 * SHLWAPI_169 [SHLWAPI.169]
106 DWORD WINAPI SHLWAPI_169 (IUnknown * lpUnknown)
108 TRACE("(%p)\n",lpUnknown);
110 if(!lpUnknown || !*((LPDWORD)lpUnknown)) return 0;
111 return IUnknown_Release(lpUnknown);
116 /*************************************************************************
117 * SHLWAPI_193 [SHLWAPI.193]
119 DWORD WINAPI SHLWAPI_193 ()
127 ret = GetDeviceCaps(hdc, BITSPIXEL) * GetDeviceCaps(hdc, PLANES);
132 /*************************************************************************
133 * SHLWAPI_215 [SHLWAPI.215]
138 LPWSTR WINAPI SHLWAPI_215 (
143 WARN("(%s %p %u)\n",lpStrSrc,lpwStrDest,len);
144 return NTDLL_wcsncpy(lpwStrDest, lpStrSrc, len);
147 /*************************************************************************
148 * SHLWAPI_219 [SHLWAPI.219]
151 * error codes: E_POINTER, E_NOINTERFACE
153 HRESULT WINAPI SHLWAPI_219 (
154 LPVOID w, /* returned by LocalAlloc, 0x450 bytes, iface */
157 LPWSTR z) /* OUT: path */
159 FIXME("(%p %p %p %p)stub\n",w,x,y,z);
163 /*************************************************************************
164 * SHLWAPI_222 [SHLWAPI.222]
167 * securityattributes missing
169 HANDLE WINAPI SHLWAPI_222 (LPCLSID guid)
173 sprintf( lpstrName, "shell.{%08lx-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}",
174 guid->Data1, guid->Data2, guid->Data3,
175 guid->Data4[0], guid->Data4[1], guid->Data4[2], guid->Data4[3],
176 guid->Data4[4], guid->Data4[5], guid->Data4[6], guid->Data4[7] );
177 FIXME("(%s) stub\n", lpstrName);
178 return CreateSemaphoreA(NULL,0, 0x7fffffff, lpstrName);
181 /*************************************************************************
182 * SHLWAPI_223 [SHLWAPI.223]
185 * get the count of the semaphore
187 DWORD WINAPI SHLWAPI_223 (HANDLE handle)
191 FIXME("(0x%08x) stub\n",handle);
193 ReleaseSemaphore( handle, 1, &oldCount); /* +1 */
194 WaitForSingleObject( handle, 0 ); /* -1 */
198 /*************************************************************************
199 * SHLWAPI_237 [SHLWAPI.237]
202 * checks if a class is registered, if not it registers it
204 DWORD WINAPI SHLWAPI_237 (WNDCLASSW * lpWndClass)
208 TRACE("(0x%08x %s)\n",lpWndClass->hInstance, debugstr_w(lpWndClass->lpszClassName));
210 if (!GetClassInfoW(lpWndClass->hInstance, lpWndClass->lpszClassName, &WndClass))
212 return RegisterClassW(lpWndClass);
217 /*************************************************************************
218 * SHLWAPI_241 [SHLWAPI.241]
221 DWORD WINAPI SHLWAPI_241 ()
227 /*************************************************************************
228 * SHLWAPI_266 [SHLWAPI.266]
230 DWORD WINAPI SHLWAPI_266 (
236 FIXME("(%p %p %p %p)stub\n",w,x,y,z);
240 /*************************************************************************
241 * SHLWAPI_267 [SHLWAPI.267]
243 HRESULT WINAPI SHLWAPI_267 (
244 LPVOID w, /* same as 1th parameter of SHLWAPI_219 */
245 LPVOID x, /* same as 2nd parameter of SHLWAPI_219 */
249 FIXME("(%p %p %p %p)stub\n",w,x,y,z);
250 *((LPDWORD)z) = 0xabba1200;
254 /*************************************************************************
255 * SHLWAPI_268 [SHLWAPI.268]
257 DWORD WINAPI SHLWAPI_268 (
261 FIXME("(%p %p)\n",w,x);
262 return 0xabba1251; /* 0 = failure */
265 /*************************************************************************
266 * SHLWAPI_276 [SHLWAPI.276]
269 DWORD WINAPI SHLWAPI_276 ()
275 /*************************************************************************
276 * SHLWAPI_278 [SHLWAPI.278]
279 DWORD WINAPI SHLWAPI_278 (
290 char * clsname = "WorkerA";
292 FIXME("(0x%08lx 0x%08x 0x%08lx 0x%08lx 0x%08x 0x%08lx)stub\n",
293 wndProc,hWndParent,dwExStyle,dwStyle,hMenu,z);
295 hCursor = LoadCursorA(0x00000000,IDC_ARROWA);
297 if(!GetClassInfoA(shlwapi_hInstance, clsname, &wndclass))
299 RtlZeroMemory(&wndclass, sizeof(WNDCLASSA));
300 wndclass.lpfnWndProc = DefWindowProcW;
301 wndclass.cbWndExtra = 4;
302 wndclass.hInstance = shlwapi_hInstance;
303 wndclass.hCursor = hCursor;
304 wndclass.hbrBackground = COLOR_BTNSHADOW;
305 wndclass.lpszMenuName = NULL;
306 wndclass.lpszClassName = clsname;
307 RegisterClassA (&wndclass);
309 hwnd = CreateWindowExA(dwExStyle, clsname, 0,dwStyle,0,0,0,0,hWndParent,
310 hMenu,shlwapi_hInstance,0);
311 SetWindowLongA(hwnd, 0, z);
312 SetWindowLongA(hwnd, GWL_WNDPROC, wndProc);
316 /*************************************************************************
317 * SHLWAPI_342 [SHLWAPI.342]
320 DWORD WINAPI SHLWAPI_342 (
326 FIXME("(%p %p %p %p)stub\n",w,x,y,z);
330 /*************************************************************************
331 * SHLWAPI_346 [SHLWAPI.346]
333 DWORD WINAPI SHLWAPI_346 (
338 FIXME("(%s %p 0x%08x)stub\n",debugstr_w(src),dest,len);
339 lstrcpynW(dest, src, len);
340 return lstrlenW(dest)+1;
344 /*************************************************************************
345 * SHLWAPI_377 [SHLWAPI.377]
347 DWORD WINAPI SHLWAPI_377 (LPVOID x, LPVOID y, LPVOID z)
349 FIXME("(%p %p %p)stub\n", x,y,z);
353 /*************************************************************************
354 * SHLWAPI_378 [SHLWAPI.378]
356 DWORD WINAPI SHLWAPI_378 (
358 LPVOID y, /* 0x50000000 */
361 FIXME("(%s %p %p)stub\n", x,y,z);
362 return LoadLibraryA(x);
365 /*************************************************************************
366 * SHLWAPI_431 [SHLWAPI.431]
368 DWORD WINAPI SHLWAPI_431 (DWORD x)
370 FIXME("(0x%08lx)stub\n", x);
374 /*************************************************************************
375 * SHLWAPI_437 [SHLWAPI.437]
378 * has to do something with switching the api between ascii and unicode
379 * observed values: 0 and 5
382 * HKLM\System\CurrentControlSet\Control\ProductOptions
385 DWORD WINAPI SHLWAPI_437 (DWORD x)
387 FIXME("(0x%08lx)stub\n", x);