Leaked source code of windows server 2003
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.
|
|
/*++
Copyright (c) 2002 Microsoft Corporation
Module Name:
OmniPagePro11Uninstall.cpp
Abstract: An OmniPagePro custom action returns an invalid error code. We cannot shim it directly, but we can shim the custom action, and then trap all calls to GetProcAddress() from MSIExec
Notes:
This is specific to OmniPage Pro 11 Uninstaller
History:
5/14/2002 mikrause Created
--*/
#include "precomp.h"
#include <stdio.h>
IMPLEMENT_SHIM_BEGIN(OmniPagePro11Uninstall) #include "ShimHookMacro.h"
APIHOOK_ENUM_BEGIN APIHOOK_ENUM_ENTRY(GetProcAddress) APIHOOK_ENUM_END
typedef UINT (WINAPI *_pfn_MsiCustomAction)(MSIHANDLE msiHandle);
_pfn_MsiCustomAction g_pfnOriginalULinkToPagis = NULL;
UINT CALLBACK ULinkToPagisHook( MSIHANDLE msiHandle ) { UINT uiRet = g_pfnOriginalULinkToPagis(msiHandle); if (uiRet == (UINT)-1) { uiRet = 0; }
return uiRet; }
FARPROC APIHOOK(GetProcAddress)( HMODULE hModule, // handle to DLL module
LPCSTR lpProcName // function name
) { if ((HIWORD(lpProcName) != 0) && (lstrcmpA(lpProcName, "ULinkToPagis") == 0)) { g_pfnOriginalULinkToPagis = (_pfn_MsiCustomAction) GetProcAddress(hModule, lpProcName); if (g_pfnOriginalULinkToPagis) { return (FARPROC)ULinkToPagisHook; } }
return ORIGINAL_API(GetProcAddress)(hModule, lpProcName); }
HOOK_BEGIN APIHOOK_ENTRY(KERNEL32.DLL, GetProcAddress ) HOOK_END
IMPLEMENT_SHIM_END
|