windows-nt/Source/XPSP1/NT/windows/appcompat/shims/general/ignorecrtexit.cpp
2020-09-26 16:20:57 +08:00

63 lines
934 B
C++

/*++
Copyright (c) 2002 Microsoft Corporation
Module Name:
IgnoreCRTExit.cpp
Abstract:
Prevent CRT shutdown routines from running. At some point MSVCRT didn't
actually call these, so some apps fault when they really do get called.
Notes:
This is a general purpose shim.
History:
05/09/2002 linstev Created
--*/
#include "precomp.h"
IMPLEMENT_SHIM_BEGIN(IgnoreCRTExit)
#include "ShimHookMacro.h"
typedef LPVOID (__cdecl *_pfn_atexit)(LPVOID);
typedef LPVOID (__cdecl *_pfn__onexit)(LPVOID);
APIHOOK_ENUM_BEGIN
APIHOOK_ENUM_ENTRY(atexit)
APIHOOK_ENUM_ENTRY(_onexit)
APIHOOK_ENUM_END
VOID
__cdecl
APIHOOK(atexit)(LPVOID lpFunc)
{
return;
}
LPVOID
__cdecl
APIHOOK(_onexit)(LPVOID lpFunc)
{
return lpFunc;
}
/*++
Register hooked functions
--*/
HOOK_BEGIN
APIHOOK_ENTRY(MSVCRT.DLL, atexit)
APIHOOK_ENTRY(MSVCRT.DLL, _onexit)
HOOK_END
IMPLEMENT_SHIM_END