windows-nt/Source/XPSP1/NT/windows/appcompat/shims/specific/proatlas2000.cpp

78 lines
1.8 KiB
C++
Raw Normal View History

2020-09-26 03:20:57 -05:00
/*++
Copyright (c) 2001 Microsoft Corporation
Module Name:
ProAtlas2000.cpp
Abstract:
This application has an uninstallation program, PAtls2kUninst.exe. The uninstallation
program will generate a temp file DEL??.TMP in %temp% dircetory. It will call
CreateProcessA to start the DEL??.TMP. The DEL??.TMP will wait for the end of
PAtls2kUninst.exe. Due to the quick return of CreateProcessA call, the
PAtls2kUninst.exe ends before DEL??.TMP starts to wait. The DEL??.TMP quits because
it cannot find PAtls2kUninst.exe. The uninstallation cannot be completed. This fix is to
hook CreateProcessA to delay the return of the function for 3 seconds.
History:
04/09/2001 zhongyl Created
--*/
#include "precomp.h"
IMPLEMENT_SHIM_BEGIN(ProAtlas2000)
#include "ShimHookMacro.h"
//
// Add APIs that you wish to hook to this macro construction.
//
APIHOOK_ENUM_BEGIN
APIHOOK_ENUM_ENTRY(CreateProcessA)
APIHOOK_ENUM_END
BOOL
APIHOOK(CreateProcessA)(
LPSTR lpszImageName,
LPSTR lpszCmdLine,
LPSECURITY_ATTRIBUTES lpsaProcess,
LPSECURITY_ATTRIBUTES lpsaThread,
BOOL fInheritHandles,
DWORD fdwCreate,
LPVOID lpvEnvironment,
LPSTR lpszCurDir,
LPSTARTUPINFOA lpsiStartInfo,
LPPROCESS_INFORMATION lppiProcInfo
)
{
BOOL bReturn=TRUE;
bReturn = ORIGINAL_API(CreateProcessA)(lpszImageName, lpszCmdLine, lpsaProcess, lpsaThread, fInheritHandles, fdwCreate, lpvEnvironment, lpszCurDir, lpsiStartInfo, lppiProcInfo);
Sleep(5000);
return bReturn;
}
/*++
Register hooked functions
--*/
HOOK_BEGIN
//
// Add APIs that you wish to hook here. All API prototypes
// must be declared in Hooks\inc\ShimProto.h. Compiler errors
// will result if you forget to add them.
//
APIHOOK_ENTRY(KERNEL32.DLL, CreateProcessA)
HOOK_END
IMPLEMENT_SHIM_END