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

72 lines
1.2 KiB
C++

/*++
Copyright (c) 2001 Microsoft Corporation
Module Name:
StoneAge.cpp
Abstract:
The app is trying to create a window with NULL WndProc, and later it seems does
not really use it , and just launch the installshield setup program and exit.
Fix this by providing a dummy WndProc.
BUGBUG: Need to add to EmulateUSER when possible.
Notes:
This is an app specific shim.
History:
06/09/2001 xiaoz Created
--*/
#include "precomp.h"
IMPLEMENT_SHIM_BEGIN(StoneAge)
#include "ShimHookMacro.h"
APIHOOK_ENUM_BEGIN
APIHOOK_ENUM_ENTRY(RegisterClassExA)
APIHOOK_ENUM_END
/*++
Set the WndProc to DefWndProc if it's NULL.
--*/
ATOM
APIHOOK(RegisterClassExA)(
CONST WNDCLASSEXA *lpwcx // class data
)
{
if (!(lpwcx->lpfnWndProc)) {
WNDCLASSEXA wcNewWndClassEx = *lpwcx;
LOGN(eDbgLevelError, "[RegisterClassExA] Null WndProc specified - correcting.");
wcNewWndClassEx.lpfnWndProc = DefWindowProcA;
return ORIGINAL_API(RegisterClassExA)(&wcNewWndClassEx);
}
else
{
return ORIGINAL_API(RegisterClassExA)(lpwcx);
}
}
/*++
Register hooked functions
--*/
HOOK_BEGIN
APIHOOK_ENTRY(USER32.DLL, RegisterClassExA)
HOOK_END
IMPLEMENT_SHIM_END