/*++ Copyright (c) 2000 Microsoft Corporation Module Name: IgnoreOemToChar.cpp Abstract: Written originally to fix an Install Shield bug. It may be specific to _ins5576._mp versions. The executable _ins5576._mp calls OemToChar on the string "%userprofile%\local settings\temp\_istmp11.dir\_ins5576._mp". The call is unessasary and causes problems with path names that contain non-ansi characters. Notes: This is a general purpose shim. History: 04/03/2001 a-larrsh Created --*/ #include "precomp.h" #include // For PathFindFileName IMPLEMENT_SHIM_BEGIN(IgnoreOemToChar) #include "ShimHookMacro.h" typedef BOOL (WINAPI *_pfn_OemToCharA)(LPCSTR lpszSrc, LPTSTR lpszDst); APIHOOK_ENUM_BEGIN APIHOOK_ENUM_ENTRY(OemToCharA) APIHOOK_ENUM_END /*++ Hook the call to OemToCharA. Determine if the string should be ignored. --*/ BOOL APIHOOK(OemToCharA)( LPCSTR lpszSrc, // string to translate LPTSTR lpszDst // translated string ) { BOOL bReturn; CString sTemp(lpszSrc); sTemp.MakeUpper(); if( sTemp.Find(L"TEMP") ) { DPFN( eDbgLevelInfo, "Ignoring attempt to convert string %s\n", lpszSrc); if (lpszDst) { _tcscpy((char *)lpszDst, lpszSrc); } bReturn = TRUE; } else { bReturn = ORIGINAL_API(OemToCharA)(lpszSrc, lpszDst); } return bReturn; } /*++ Register hooked functions --*/ HOOK_BEGIN APIHOOK_ENTRY(USER32.DLL, OemToCharA) HOOK_END IMPLEMENT_SHIM_END