/*++ Copyright (c) 2001 Microsoft Corporation Module Name: JavaVM2.cpp Abstract: For versions of msjavx86.exe >= 06.00.3229.0000 we need to append /nowin2kcheck to the execution of javatrig.exe. Notes: This is an app specific shim. History: 05/31/2001 mnikkel Created --*/ #include "precomp.h" IMPLEMENT_SHIM_BEGIN(JavaVM2) #include "ShimHookMacro.h" APIHOOK_ENUM_BEGIN APIHOOK_ENUM_ENTRY(CreateProcessA) APIHOOK_ENUM_END /*++ Check CreateProcessA for execution of javatrig, if found append /nowin2kcheck to the command line. --*/ BOOL APIHOOK(CreateProcessA)( LPCSTR lpApplicationName, LPSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCSTR lpCurrentDirectory, LPSTARTUPINFOA lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation ) { DPFN( eDbgLevelSpew, "[CreateProcessA] appname:(%s)\ncommandline:(%s)", lpApplicationName, lpCommandLine ); if (lpCommandLine) { CSTRING_TRY { CString csCL(lpCommandLine); int nLoc = csCL.Find(L"javatrig.exe "); if ( nLoc > -1 ) { csCL += L" /nowin2kcheck"; DPFN( eDbgLevelSpew, "[CreateProcessA] appname:(%s)\nNEW commandline:(%S)", lpApplicationName, csCL.Get() ); return ORIGINAL_API(CreateProcessA)(lpApplicationName, csCL.GetAnsi(), lpProcessAttributes, lpThreadAttributes, bInheritHandles, dwCreationFlags, lpEnvironment, lpCurrentDirectory, lpStartupInfo, lpProcessInformation); } } CSTRING_CATCH { // Do Nothing } } // // Call the original API // return ORIGINAL_API(CreateProcessA)(lpApplicationName, lpCommandLine, lpProcessAttributes, lpThreadAttributes, bInheritHandles, dwCreationFlags, lpEnvironment, lpCurrentDirectory, lpStartupInfo, lpProcessInformation); } /*++ Register hooked functions --*/ HOOK_BEGIN APIHOOK_ENTRY(KERNEL32.DLL, CreateProcessA) HOOK_END IMPLEMENT_SHIM_END