You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
77 lines
1.9 KiB
77 lines
1.9 KiB
/*++
|
|
|
|
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
|
|
|