81 lines
1.4 KiB
C++
81 lines
1.4 KiB
C++
/*++
|
|
|
|
Copyright (c) 2000 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
CrystalWebPageServer.cpp
|
|
|
|
Abstract:
|
|
|
|
The app calls GetEnhMetaFileHeader passing
|
|
nSize of 1000. We need to change it to 100 to make the app not crash.
|
|
If we don't do it this will cause memory corruption. Win9x seems to
|
|
be fine with it. Maybe it will crash the app less often in Win9x than
|
|
it does in Win2k.
|
|
|
|
Notes:
|
|
|
|
This is an app specific shim.
|
|
|
|
History:
|
|
|
|
02/16/2000 clupu Created
|
|
|
|
--*/
|
|
|
|
#include "precomp.h"
|
|
|
|
IMPLEMENT_SHIM_BEGIN(CrystalWebPageServer)
|
|
#include "ShimHookMacro.h"
|
|
|
|
APIHOOK_ENUM_BEGIN
|
|
APIHOOK_ENUM_ENTRY(GetEnhMetaFileHeader)
|
|
APIHOOK_ENUM_END
|
|
|
|
|
|
/*++
|
|
|
|
The app calls GetEnhMetaFileHeader passing
|
|
nSize of 1000. We need to change it to 100 to make the app work
|
|
|
|
--*/
|
|
|
|
UINT
|
|
APIHOOK(GetEnhMetaFileHeader)(
|
|
HENHMETAFILE hemf,
|
|
UINT nSize,
|
|
LPENHMETAHEADER lpEnhMetaHeader
|
|
)
|
|
{
|
|
if (nSize == 1000) {
|
|
nSize = 100;
|
|
|
|
DPFN(
|
|
eDbgLevelInfo,
|
|
"CrystalWebPageServer.dll, GetEnhMetaFileHeader: changed the size to 100.\n");
|
|
}
|
|
|
|
//
|
|
// Call the original API
|
|
//
|
|
return ORIGINAL_API(GetEnhMetaFileHeader)(
|
|
hemf,
|
|
nSize,
|
|
lpEnhMetaHeader);
|
|
}
|
|
|
|
/*++
|
|
|
|
Register hooked functions
|
|
|
|
--*/
|
|
|
|
HOOK_BEGIN
|
|
APIHOOK_ENTRY(GDI32.DLL, GetEnhMetaFileHeader)
|
|
HOOK_END
|
|
|
|
|
|
IMPLEMENT_SHIM_END
|
|
|