Source code of Windows XP (NT5)
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) 2000 Microsoft Corporation
Module Name:
ForceCoInitialize.cpp
Abstract:
Makes sure we call CoInitialize on this thread if nobody else has.
Notes:
This is a general purpose shim.
History:
02/22/2000 linstev Created
--*/
#include "precomp.h"
IMPLEMENT_SHIM_BEGIN(ForceCoInitialize) #include "ShimHookMacro.h"
APIHOOK_ENUM_BEGIN APIHOOK_ENUM_ENTRY(CoCreateInstance) APIHOOK_ENUM_END
/*++
Call CoInitialize if nobody else has --*/
STDAPI APIHOOK(CoCreateInstance)( REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID riid, LPVOID* ppv ) { HRESULT hr = ORIGINAL_API(CoCreateInstance)( rclsid, pUnkOuter, dwClsContext, riid, ppv);
if (hr == CO_E_NOTINITIALIZED) { if (CoInitialize(NULL) == S_OK) { DPFN( eDbgLevelInfo, "[CoCreateInstance] Success: Initialized previously uninitialized COM.\n"); }
hr = ORIGINAL_API(CoCreateInstance)( rclsid, pUnkOuter, dwClsContext, riid, ppv); } return hr; } /*++
Register hooked functions
--*/
HOOK_BEGIN
APIHOOK_ENTRY(OLE32.DLL, CoCreateInstance)
HOOK_END
IMPLEMENT_SHIM_END
|