| /* | |
| * SHLWAPI ordinal functions | |
| * | |
| * Copyright 1997 Marcus Meissner | |
| * 1998 Jürgen Schmied | |
| */ | |
| #include <stdio.h> | |
| #include "windef.h" | |
| #include "wine/undocshell.h" | |
| #include "wine/unicode.h" | |
| #include "debugtools.h" | |
| DEFAULT_DEBUG_CHANNEL(shell); | |
| extern HINSTANCE shlwapi_hInstance; | |
| /* | |
| NOTES: The most functions exported by ordinal seem to be superflous. | |
| The reason for these functions to be there is to provide a wraper | |
| for unicode functions to providing these functions on systems without | |
| unicode functions eg. win95/win98. Since we have such functions we just | |
| call these. | |
| */ | |
| /************************************************************************* | |
| * SHLWAPI_1 [SHLWAPI.1] | |
| */ | |
| DWORD WINAPI SHLWAPI_1 ( | |
| LPSTR lpStr, | |
| LPVOID x) | |
| { | |
| FIXME("(%p %s %p %s)\n",lpStr, debugstr_a(lpStr),x, debugstr_a(x)); | |
| return 0; | |
| } | |
| /************************************************************************* | |
| * SHLWAPI_2 [SHLWAPI.2] | |
| */ | |
| DWORD WINAPI SHLWAPI_2 (LPCWSTR x,LPVOID y) | |
| { | |
| FIXME("(%s,%p)\n",debugstr_w(x),y); | |
| return 0; | |
| } | |
| /************************************************************************* | |
| * SHLWAPI_16 [SHLWAPI.16] | |
| */ | |
| HRESULT WINAPI SHLWAPI_16 ( | |
| LPVOID w, | |
| LPVOID x, | |
| LPVOID y, | |
| LPWSTR z) | |
| { | |
| FIXME("(%p %p %p %p)stub\n",w,x,y,z); | |
| return 0xabba1252; | |
| } | |
| /************************************************************************* | |
| * SHLWAPI_23 [SHLWAPI.23] | |
| * | |
| * NOTES | |
| * converts a guid to a string | |
| * returns strlen(str) | |
| */ | |
| DWORD WINAPI SHLWAPI_23 ( | |
| REFGUID guid, /* [in] clsid */ | |
| LPSTR str, /* [out] buffer */ | |
| INT cmax) /* [in] size of buffer */ | |
| { | |
| char xguid[40]; | |
| sprintf( xguid, "{%08lx-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}", | |
| guid->Data1, guid->Data2, guid->Data3, | |
| guid->Data4[0], guid->Data4[1], guid->Data4[2], guid->Data4[3], | |
| guid->Data4[4], guid->Data4[5], guid->Data4[6], guid->Data4[7] ); | |
| TRACE("(%s %p 0x%08x)stub\n", xguid, str, cmax); | |
| if (strlen(xguid)>=cmax) return 0; | |
| strcpy(str,xguid); | |
| return strlen(xguid) + 1; | |
| } | |
| /************************************************************************* | |
| * SHLWAPI_24 [SHLWAPI.24] | |
| * | |
| * NOTES | |
| * converts a guid to a string | |
| * returns strlen(str) | |
| */ | |
| DWORD WINAPI SHLWAPI_24 ( | |
| REFGUID guid, /* [in] clsid */ | |
| LPWSTR str, /* [out] buffer */ | |
| INT cmax) /* [in] size of buffer */ | |
| { | |
| char xguid[40]; | |
| sprintf( xguid, "{%08lx-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}", | |
| guid->Data1, guid->Data2, guid->Data3, | |
| guid->Data4[0], guid->Data4[1], guid->Data4[2], guid->Data4[3], | |
| guid->Data4[4], guid->Data4[5], guid->Data4[6], guid->Data4[7] ); | |
| return MultiByteToWideChar( CP_ACP, 0, xguid, -1, str, cmax ); | |
| } | |
| /************************************************************************* | |
| * SHLWAPI_38 [SHLWAPI.38] | |
| * | |
| */ | |
| DWORD WINAPI SHLWAPI_38 ( DWORD x) { | |
| FIXME("(%lx),stub!\n",x); | |
| return 0; | |
| } | |
| /************************************************************************* | |
| * SHLWAPI_137 | |
| */ | |
| DWORD WINAPI SHLWAPI_137( | |
| UINT what) | |
| { | |
| FIXME("(%#x)stub\n", what); | |
| return 0; | |
| } | |
| /************************************************************************* | |
| * SHLWAPI_141 | |
| */ | |
| DWORD WINAPI SHLWAPI_141( LPVOID ptr, DWORD x , LPVOID ptr2) | |
| { | |
| FIXME("(%p,%ld,%p), stub\n", ptr,x,ptr2); | |
| return 0; | |
| } | |
| /************************************************************************* | |
| * SHLWAPI_151 [SHLWAPI.151] | |
| */ | |
| DWORD WINAPI SHLWAPI_151(void) | |
| { | |
| FIXME(": stub\n"); | |
| return 0; | |
| } | |
| /************************************************************************* | |
| * SHLWAPI_153 [SHLWAPI.153] | |
| */ | |
| DWORD WINAPI SHLWAPI_153(DWORD dw1, DWORD dw2, DWORD dw3) | |
| { | |
| FIXME("%08lx %08lx %08lx - stub\n", dw1, dw2, dw3); | |
| return 0; | |
| } | |
| /************************************************************************* | |
| * SHLWAPI_156 [SHLWAPI.156] | |
| * | |
| * FIXME: function guessed | |
| */ | |
| DWORD WINAPI SHLWAPI_156 ( | |
| LPWSTR str1, /* [???] NOTE: "shell32.dll" */ | |
| LPWSTR str2) /* [???] NOTE: "shell32.dll" */ | |
| { | |
| FIXME("(%s %s)stub\n",debugstr_w(str1),debugstr_w(str2)); | |
| return lstrcmpW(str1,str2); | |
| } | |
| /************************************************************************* | |
| * SHLWAPI_169 [SHLWAPI.169] | |
| */ | |
| DWORD WINAPI SHLWAPI_169 (IUnknown * lpUnknown) | |
| { | |
| TRACE("(%p)\n",lpUnknown); | |
| #if 0 | |
| if(!lpUnknown || !*((LPDWORD)lpUnknown)) return 0; | |
| return IUnknown_Release(lpUnknown); | |
| #endif | |
| return 0; | |
| } | |
| /************************************************************************* | |
| * SHLWAPI_193 [SHLWAPI.193] | |
| */ | |
| DWORD WINAPI SHLWAPI_193 () | |
| { | |
| HDC hdc; | |
| DWORD ret; | |
| TRACE("()\n"); | |
| hdc = GetDC(0); | |
| ret = GetDeviceCaps(hdc, BITSPIXEL) * GetDeviceCaps(hdc, PLANES); | |
| ReleaseDC(0, hdc); | |
| return ret; | |
| } | |
| /************************************************************************* | |
| * SHLWAPI_215 [SHLWAPI.215] | |
| * | |
| * NOTES | |
| * check me! | |
| */ | |
| LPWSTR WINAPI SHLWAPI_215 ( | |
| LPWSTR lpStrSrc, | |
| LPVOID lpwStrDest, | |
| int len) | |
| { | |
| WARN("(%p %p %u)\n",lpStrSrc,lpwStrDest,len); | |
| return strncpyW(lpwStrDest, lpStrSrc, len); | |
| } | |
| /************************************************************************* | |
| * SHLWAPI_219 [SHLWAPI.219] | |
| * | |
| * NOTES | |
| * error codes: E_POINTER, E_NOINTERFACE | |
| */ | |
| HRESULT WINAPI SHLWAPI_219 ( | |
| LPVOID w, /* [???] NOTE: returned by LocalAlloc, 0x450 bytes, iface */ | |
| LPVOID x, | |
| LPVOID y, | |
| LPWSTR z) /* [???] NOTE: OUT: path */ | |
| { | |
| FIXME("(%p %p %p %p)stub\n",w,x,y,z); | |
| return 0xabba1252; | |
| } | |
| /************************************************************************* | |
| * SHLWAPI_222 [SHLWAPI.222] | |
| * | |
| * NOTES | |
| * securityattributes missing | |
| */ | |
| HANDLE WINAPI SHLWAPI_222 (LPCLSID guid) | |
| { | |
| char lpstrName[80]; | |
| sprintf( lpstrName, "shell.{%08lx-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}", | |
| guid->Data1, guid->Data2, guid->Data3, | |
| guid->Data4[0], guid->Data4[1], guid->Data4[2], guid->Data4[3], | |
| guid->Data4[4], guid->Data4[5], guid->Data4[6], guid->Data4[7] ); | |
| FIXME("(%s) stub\n", lpstrName); | |
| return CreateSemaphoreA(NULL,0, 0x7fffffff, lpstrName); | |
| } | |
| /************************************************************************* | |
| * SHLWAPI_223 [SHLWAPI.223] | |
| * | |
| * NOTES | |
| * get the count of the semaphore | |
| */ | |
| DWORD WINAPI SHLWAPI_223 (HANDLE handle) | |
| { | |
| DWORD oldCount; | |
| FIXME("(0x%08x) stub\n",handle); | |
| ReleaseSemaphore( handle, 1, &oldCount); /* +1 */ | |
| WaitForSingleObject( handle, 0 ); /* -1 */ | |
| return oldCount; | |
| } | |
| /************************************************************************* | |
| * SHLWAPI_237 [SHLWAPI.237] | |
| * | |
| * NOTES | |
| * checks if a class is registered, if not it registers it | |
| */ | |
| DWORD WINAPI SHLWAPI_237 (WNDCLASSW * lpWndClass) | |
| { | |
| WNDCLASSW WndClass; | |
| TRACE("(0x%08x %s)\n",lpWndClass->hInstance, debugstr_w(lpWndClass->lpszClassName)); | |
| if (!GetClassInfoW(lpWndClass->hInstance, lpWndClass->lpszClassName, &WndClass)) | |
| { | |
| return RegisterClassW(lpWndClass); | |
| } | |
| return TRUE; | |
| } | |
| /************************************************************************* | |
| * SHLWAPI_241 [SHLWAPI.241] | |
| * | |
| */ | |
| DWORD WINAPI SHLWAPI_241 () | |
| { | |
| FIXME("()stub\n"); | |
| return 0xabba1243; | |
| } | |
| /************************************************************************* | |
| * SHLWAPI_266 [SHLWAPI.266] | |
| */ | |
| DWORD WINAPI SHLWAPI_266 ( | |
| LPVOID w, | |
| LPVOID x, | |
| LPVOID y, | |
| LPVOID z) | |
| { | |
| FIXME("(%p %p %p %p)stub\n",w,x,y,z); | |
| return 0xabba1248; | |
| } | |
| /************************************************************************* | |
| * SHLWAPI_267 [SHLWAPI.267] | |
| */ | |
| HRESULT WINAPI SHLWAPI_267 ( | |
| LPVOID w, /* [???] NOTE: same as 1th parameter of SHLWAPI_219 */ | |
| LPVOID x, /* [???] NOTE: same as 2nd parameter of SHLWAPI_219 */ | |
| LPVOID y, | |
| LPVOID z) | |
| { | |
| FIXME("(%p %p %p %p)stub\n",w,x,y,z); | |
| *((LPDWORD)z) = 0xabba1200; | |
| return 0xabba1254; | |
| } | |
| /************************************************************************* | |
| * SHLWAPI_268 [SHLWAPI.268] | |
| */ | |
| DWORD WINAPI SHLWAPI_268 ( | |
| LPVOID w, | |
| LPVOID x) | |
| { | |
| FIXME("(%p %p)\n",w,x); | |
| return 0xabba1251; /* 0 = failure */ | |
| } | |
| /************************************************************************* | |
| * SHLWAPI_276 [SHLWAPI.276] | |
| * | |
| */ | |
| DWORD WINAPI SHLWAPI_276 () | |
| { | |
| FIXME("()stub\n"); | |
| return 0xabba1244; | |
| } | |
| /************************************************************************* | |
| * SHLWAPI_278 [SHLWAPI.278] | |
| * | |
| */ | |
| DWORD WINAPI SHLWAPI_278 ( | |
| LONG wndProc, | |
| HWND hWndParent, | |
| DWORD dwExStyle, | |
| DWORD dwStyle, | |
| HMENU hMenu, | |
| LONG z) | |
| { | |
| WNDCLASSA wndclass; | |
| HWND hwnd; | |
| HCURSOR hCursor; | |
| char * clsname = "WorkerA"; | |
| FIXME("(0x%08lx 0x%08x 0x%08lx 0x%08lx 0x%08x 0x%08lx)stub\n", | |
| wndProc,hWndParent,dwExStyle,dwStyle,hMenu,z); | |
| hCursor = LoadCursorA(0x00000000,IDC_ARROWA); | |
| if(!GetClassInfoA(shlwapi_hInstance, clsname, &wndclass)) | |
| { | |
| RtlZeroMemory(&wndclass, sizeof(WNDCLASSA)); | |
| wndclass.lpfnWndProc = DefWindowProcW; | |
| wndclass.cbWndExtra = 4; | |
| wndclass.hInstance = shlwapi_hInstance; | |
| wndclass.hCursor = hCursor; | |
| wndclass.hbrBackground = COLOR_BTNSHADOW; | |
| wndclass.lpszMenuName = NULL; | |
| wndclass.lpszClassName = clsname; | |
| RegisterClassA (&wndclass); | |
| } | |
| hwnd = CreateWindowExA(dwExStyle, clsname, 0,dwStyle,0,0,0,0,hWndParent, | |
| hMenu,shlwapi_hInstance,0); | |
| SetWindowLongA(hwnd, 0, z); | |
| SetWindowLongA(hwnd, GWL_WNDPROC, wndProc); | |
| return hwnd; | |
| } | |
| /************************************************************************* | |
| * SHLWAPI_342 [SHLWAPI.342] | |
| * | |
| */ | |
| DWORD WINAPI SHLWAPI_342 ( | |
| LPVOID w, | |
| LPVOID x, | |
| LPVOID y, | |
| LPVOID z) | |
| { | |
| FIXME("(%p %p %p %p)stub\n",w,x,y,z); | |
| return 0xabba1249; | |
| } | |
| /************************************************************************* | |
| * SHLWAPI_346 [SHLWAPI.346] | |
| */ | |
| DWORD WINAPI SHLWAPI_346 ( | |
| LPCWSTR src, | |
| LPWSTR dest, | |
| int len) | |
| { | |
| FIXME("(%s %p 0x%08x)stub\n",debugstr_w(src),dest,len); | |
| lstrcpynW(dest, src, len); | |
| return lstrlenW(dest)+1; | |
| } | |
| /************************************************************************* | |
| * SHLWAPI_376 [SHLWAPI.377] | |
| */ | |
| DWORD WINAPI SHLWAPI_376 (LONG x) | |
| { | |
| FIXME("(0x%08lx)stub\n", x ); | |
| return 0xabba1245; | |
| } | |
| /************************************************************************* | |
| * SHLWAPI_377 [SHLWAPI.377] | |
| */ | |
| DWORD WINAPI SHLWAPI_377 (LPVOID x, LPVOID y, LPVOID z) | |
| { | |
| FIXME("(%p %p %p)stub\n", x,y,z); | |
| return 0xabba1246; | |
| } | |
| /************************************************************************* | |
| * SHLWAPI_378 [SHLWAPI.378] | |
| */ | |
| DWORD WINAPI SHLWAPI_378 ( | |
| LPSTR x, | |
| LPVOID y, /* [???] 0x50000000 */ | |
| LPVOID z) /* [???] 4 */ | |
| { | |
| FIXME("(%s %p %p)stub\n", x,y,z); | |
| return LoadLibraryA(x); | |
| } | |
| /************************************************************************* | |
| * SHLWAPI_431 [SHLWAPI.431] | |
| */ | |
| DWORD WINAPI SHLWAPI_431 (DWORD x) | |
| { | |
| FIXME("(0x%08lx)stub\n", x); | |
| return 0xabba1247; | |
| } | |
| /************************************************************************* | |
| * SHLWAPI_437 [SHLWAPI.437] | |
| * | |
| * NOTES | |
| * has to do something with switching the api between ascii and unicode | |
| * observed values: 0 and 5 | |
| * | |
| * accesses | |
| * HKLM\System\CurrentControlSet\Control\ProductOptions | |
| * | |
| */ | |
| DWORD WINAPI SHLWAPI_437 (DWORD x) | |
| { | |
| FIXME("(0x%08lx)stub\n", x); | |
| return 0xabba1247; | |
| } | |
| /************************************************************************* | |
| * UrlEscapeA [SHLWAPI] | |
| */ | |
| HRESULT WINAPI UrlEscapeA( | |
| LPCSTR pszUrl, | |
| LPSTR pszEscaped, | |
| LPDWORD pcchEscaped, | |
| DWORD dwFlags) | |
| { | |
| FIXME("(%s %p %p 0x%08lx)stub\n",debugstr_a(pszUrl), | |
| pszEscaped, pcchEscaped, dwFlags); | |
| return 0; | |
| } | |
| /************************************************************************* | |
| * UrlEscapeW [SHLWAPI] | |
| */ | |
| HRESULT WINAPI UrlEscapeW( | |
| LPCWSTR pszUrl, | |
| LPWSTR pszEscaped, | |
| LPDWORD pcchEscaped, | |
| DWORD dwFlags) | |
| { | |
| FIXME("(%s %p %p 0x%08lx)stub\n",debugstr_w(pszUrl), | |
| pszEscaped, pcchEscaped, dwFlags); | |
| return 0; | |
| } | |
| /************************************************************************* | |
| * SHCreateShellPalette [SHLWAPI.@] | |
| */ | |
| HPALETTE WINAPI SHCreateShellPalette(HDC hdc) | |
| { | |
| FIXME("stub\n"); | |
| return CreateHalftonePalette(hdc); | |
| } | |
| /************************************************************************* | |
| * SHGetInverseCMAP | |
| */ | |
| DWORD WINAPI SHGetInverseCMAP (LPVOID x, DWORD why) | |
| { | |
| FIXME("(%p, %#lx)stub\n", x, why); | |
| return 0; | |
| } | |
| /************************************************************************* | |
| * SHIsLowMemoryMachine [SHLWAPI.@] | |
| */ | |
| DWORD WINAPI SHIsLowMemoryMachine (DWORD x) | |
| { | |
| FIXME("0x%08lx\n", x); | |
| return 0; | |
| } |