/*++ Copyright (c) 2000 Microsoft Corporation Module Name: WordPerfect8.cpp Abstract: If the SafeArray* to the SafeArrayAccessData is an invalid one this function returns a NULL pointer for the data. Corel WordPerfect8 was AV'ing because of this. This is an app specific shim. History: 02/07/2001 prashkud Created --*/ #include "precomp.h" IMPLEMENT_SHIM_BEGIN(WordPerfect8) #include "ShimHookMacro.h" APIHOOK_ENUM_BEGIN APIHOOK_ENUM_ENTRY(SafeArrayAccessData) APIHOOK_ENUM_END /*++ This hooks SafeArrayAccessData and returns an error code if *ppvData is NULL. --*/ HRESULT APIHOOK(SafeArrayAccessData)( SAFEARRAY *psa, void HUGEP **ppvData ) { HRESULT hRes = S_OK; hRes = ORIGINAL_API(SafeArrayAccessData)( psa, ppvData ); if (*ppvData == NULL) { DPFN( eDbgLevelError, "Getting a NULL pointer for the\ SafeArray Data - ppvData = %lx & *ppvData =%lx",ppvData,*ppvData); DPFN( eDbgLevelError, "SAFEARRAY is psa = %lx,\ psa.cbElements= %l",psa,psa->cbElements); hRes = E_UNEXPECTED; } return hRes; } /*++ Register hooked functions --*/ HOOK_BEGIN APIHOOK_ENTRY(OLEAUT32.DLL, SafeArrayAccessData) HOOK_END IMPLEMENT_SHIM_END