- Reimplement functions 350, 351, 352 to use appropriate W functions
(thanks Jürgen!) - Add additional comments to functions 266, 267, 276 and adjust the stubbed return values.
This commit is contained in:
parent
6db25faed2
commit
bf73d90097
@ -1572,29 +1572,41 @@ DWORD WINAPI SHLWAPI_241 ()
|
|||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* @ [SHLWAPI.266]
|
* @ [SHLWAPI.266]
|
||||||
|
*
|
||||||
|
* native does at least approximately:
|
||||||
|
* strcpyW(newstr, x);
|
||||||
|
* strcatW(newstr, "\\Restrictions");
|
||||||
|
* if (RegOpenKeyExA(80000001, newstr, 00000000,00000001,40520b78))
|
||||||
|
* return 0;
|
||||||
|
* *unknown*
|
||||||
*/
|
*/
|
||||||
DWORD WINAPI SHLWAPI_266 (
|
DWORD WINAPI SHLWAPI_266 (
|
||||||
LPVOID w,
|
LPVOID w,
|
||||||
LPVOID x,
|
LPVOID x, /* [in] partial registry key */
|
||||||
LPVOID y,
|
LPVOID y,
|
||||||
LPVOID z)
|
LPVOID z)
|
||||||
{
|
{
|
||||||
FIXME("(%p %p %p %p)stub\n",w,x,y,z);
|
FIXME("(%p %p %p %p)stub\n",w,x,y,z);
|
||||||
return 0xabba1248;
|
return /* 0xabba1248 */ 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* @ [SHLWAPI.267]
|
* @ [SHLWAPI.267]
|
||||||
*/
|
*/
|
||||||
HRESULT WINAPI SHLWAPI_267 (
|
HRESULT WINAPI SHLWAPI_267 (
|
||||||
LPVOID w, /* [???] NOTE: same as 1th parameter of SHLWAPI_219 */
|
LPVOID w,
|
||||||
LPVOID x, /* [???] NOTE: same as 2nd parameter of SHLWAPI_219 */
|
LPVOID x,
|
||||||
LPVOID y,
|
LPVOID y, /* [???] NOTE: same as 3rd parameter of SHLWAPI_219 */
|
||||||
LPVOID z)
|
LPVOID z) /* [???] NOTE: same as 4th parameter of SHLWAPI_219 */
|
||||||
{
|
{
|
||||||
FIXME("(%p %p %p %p)stub\n",w,x,y,z);
|
FIXME("(%p %p %p %p)stub\n",w,x,y,z);
|
||||||
|
|
||||||
|
/* native seems to do:
|
||||||
|
* SHLWAPI_219 ((LPVOID)(((LPSTR)x)-4), ???, (REFIID) y, (LPVOID*) z);
|
||||||
|
*/
|
||||||
|
|
||||||
*((LPDWORD)z) = 0xabba1200;
|
*((LPDWORD)z) = 0xabba1200;
|
||||||
return 0xabba1254;
|
return /* 0xabba1254 */ 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
@ -1611,11 +1623,19 @@ DWORD WINAPI SHLWAPI_268 (
|
|||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* @ [SHLWAPI.276]
|
* @ [SHLWAPI.276]
|
||||||
*
|
*
|
||||||
|
* on first call process does following: other calls just returns 2
|
||||||
|
* instance = LoadLibraryA("SHELL32.DLL");
|
||||||
|
* func = GetProcAddress(instance, "DllGetVersion");
|
||||||
|
* ret = RegOpenKeyExA(80000002, "Software\\Microsoft\\Internet Explorer",00000000,0002001f, newkey);
|
||||||
|
* ret = RegQueryValueExA(newkey, "IntegratedBrowser",00000000,00000000,4052588c,40525890);
|
||||||
|
* RegCloseKey(newkey);
|
||||||
|
* FreeLibrary(instance);
|
||||||
|
* return 2;
|
||||||
*/
|
*/
|
||||||
DWORD WINAPI SHLWAPI_276 ()
|
DWORD WINAPI SHLWAPI_276 ()
|
||||||
{
|
{
|
||||||
FIXME("()stub\n");
|
FIXME("()stub\n");
|
||||||
return /* 0xabba1244 */ 0;
|
return /* 0xabba1244 */ 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
@ -1814,26 +1834,24 @@ DWORD WINAPI SHLWAPI_346 (
|
|||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* @ [SHLWAPI.350]
|
* @ [SHLWAPI.350]
|
||||||
*
|
*
|
||||||
* seems to be W interface to GetFileVersionInfoSizeA
|
* seems to be late bound call to GetFileVersionInfoSizeW
|
||||||
*/
|
*/
|
||||||
DWORD WINAPI SHLWAPI_350 (
|
DWORD WINAPI SHLWAPI_350 (
|
||||||
LPWSTR x,
|
LPWSTR x,
|
||||||
LPVOID y)
|
LPVOID y)
|
||||||
{
|
{
|
||||||
static DWORD WINAPI (*pfnFunc)(LPCSTR,LPDWORD) = NULL;
|
static DWORD WINAPI (*pfnFunc)(LPCWSTR,LPDWORD) = NULL;
|
||||||
CHAR mbpath[MAX_PATH];
|
|
||||||
DWORD ret;
|
DWORD ret;
|
||||||
|
|
||||||
GET_FUNC(version, "GetFileVersionInfoSizeA", 0);
|
GET_FUNC(version, "GetFileVersionInfoSizeW", 0);
|
||||||
WideCharToMultiByte(0, 0, x, -1, mbpath, MAX_PATH, 0, 0);
|
ret = pfnFunc(x, y);
|
||||||
ret = pfnFunc(mbpath, y);
|
|
||||||
return 0x208 + ret;
|
return 0x208 + ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* @ [SHLWAPI.351]
|
* @ [SHLWAPI.351]
|
||||||
*
|
*
|
||||||
* seems to be W interface to GetFileVersionInfoA
|
* seems to be late bound call to GetFileVersionInfoW
|
||||||
*/
|
*/
|
||||||
BOOL WINAPI SHLWAPI_351 (
|
BOOL WINAPI SHLWAPI_351 (
|
||||||
LPWSTR w, /* [in] path to dll */
|
LPWSTR w, /* [in] path to dll */
|
||||||
@ -1841,18 +1859,16 @@ BOOL WINAPI SHLWAPI_351 (
|
|||||||
DWORD y, /* [in] return value from .350 - assume length */
|
DWORD y, /* [in] return value from .350 - assume length */
|
||||||
LPVOID z) /* [in/out] buffer (+0x208 sent to GetFileVersionInfoA) */
|
LPVOID z) /* [in/out] buffer (+0x208 sent to GetFileVersionInfoA) */
|
||||||
{
|
{
|
||||||
static BOOL WINAPI (*pfnFunc)(LPCSTR,DWORD,DWORD,LPVOID) = NULL;
|
static BOOL WINAPI (*pfnFunc)(LPCWSTR,DWORD,DWORD,LPVOID) = NULL;
|
||||||
CHAR mbpath[MAX_PATH];
|
|
||||||
|
|
||||||
GET_FUNC(version, "GetFileVersionInfoA", 0);
|
GET_FUNC(version, "GetFileVersionInfoW", 0);
|
||||||
WideCharToMultiByte(0, 0, w, -1, mbpath, MAX_PATH, 0, 0);
|
return pfnFunc(w, x, y-0x208, z+0x208);
|
||||||
return pfnFunc(mbpath , x, y-0x208, z+0x208);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* @ [SHLWAPI.352]
|
* @ [SHLWAPI.352]
|
||||||
*
|
*
|
||||||
* seems to be W interface to VerQueryValueA
|
* seems to be late bound call to VerQueryValueW
|
||||||
*/
|
*/
|
||||||
WORD WINAPI SHLWAPI_352 (
|
WORD WINAPI SHLWAPI_352 (
|
||||||
LPVOID w, /* [in] buffer from _351 */
|
LPVOID w, /* [in] buffer from _351 */
|
||||||
@ -1861,18 +1877,10 @@ WORD WINAPI SHLWAPI_352 (
|
|||||||
LPVOID y, /* [out] ver buffer - passed to VerQueryValueA as #3 */
|
LPVOID y, /* [out] ver buffer - passed to VerQueryValueA as #3 */
|
||||||
UINT* z) /* [in] ver length - passed to VerQueryValueA as #4 */
|
UINT* z) /* [in] ver length - passed to VerQueryValueA as #4 */
|
||||||
{
|
{
|
||||||
static WORD WINAPI (*pfnFunc)(LPVOID,LPCSTR,LPVOID*,UINT*) = NULL;
|
static WORD WINAPI (*pfnFunc)(LPVOID,LPCWSTR,LPVOID*,UINT*) = NULL;
|
||||||
CHAR buf1[MAX_PATH];
|
|
||||||
WORD ret;
|
|
||||||
|
|
||||||
GET_FUNC(version, "VerQueryValueA", 0);
|
GET_FUNC(version, "VerQueryValueW", 0);
|
||||||
WideCharToMultiByte(0, 0, x, lstrlenW(x)+1, buf1, MAX_PATH, 0, 0);
|
return pfnFunc(w+0x208, x, y, z);
|
||||||
ret = pfnFunc(w+0x208, buf1, y, z);
|
|
||||||
if (CompareStringA(GetThreadLocale(), NORM_IGNORECASE, buf1, 1,
|
|
||||||
"\\StringFileInfo", 15) == 2 /* CSTR_EQUAL */) {
|
|
||||||
ERR("Need to translate back to wide - should fail now\n");
|
|
||||||
}
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
|
Loading…
x
Reference in New Issue
Block a user