#include #include InProcServerDemo::InProcServerDemo(IUnknown *pUnkOuter,REFIID riid,Console &winConsole) //: InProcServer(pUnkOuter,riid,winConsole), mValue(0) : mValue(0), mRefCount(0), mWinConsole(winConsole) { getConsole().writeLine(""); if(!IsEqualIID(riid,IID_IDemo))throw InProcServerDemo::InProcServerDemoNoInterface(); } InProcServerDemo::~InProcServerDemo() { getConsole().writeLine(""); } REFIID InProcServerDemo::getREFIID(void) { getConsole().writeLine(""); return IID_IDemo; } void *InProcServerDemo::getInstance(void) { getConsole().writeLine(""); return (void*)this; } HRESULT __stdcall InProcServerDemo::getValue(int *pvalue) { getConsole().writeLine(""); if(!pvalue)return ComResult::InvalidArg; *pvalue=mValue; return ComResult::NoError; } HRESULT __stdcall InProcServerDemo::setValue(int value) { getConsole().writeLine(""); mValue=value; return ComResult::NoError; } HRESULT __stdcall InProcServerDemo::QueryInterface(REFIID riid,void **ppv) { getConsole().writeLine(""); *ppv=0; if(IsEqualIID(riid,IID_IUnknown)||IsEqualIID(riid,getREFIID())) { *ppv=getInstance(); // *ppv=this; AddRef(); return NOERROR; } return ComResult::NoInterface; } ULONG __stdcall InProcServerDemo::AddRef(void) { getConsole().writeLine(""); return ++mRefCount; } ULONG __stdcall InProcServerDemo::Release(void) { getConsole().writeLine(""); if(0==--mRefCount)::delete this; return mRefCount; } #if 0 HRESULT __stdcall InProcServerDemo::QueryInterface(REFIID riid,void **ppv) { getConsole().writeLine(""); return InProcServer::QueryInterface(riid,ppv); } ULONG __stdcall InProcServerDemo::AddRef(void) { getConsole().writeLine(""); return InProcServer::AddRef(); } ULONG __stdcall InProcServerDemo::Release(void) { getConsole().writeLine(""); return InProcServer::Release(); } #endif Console &InProcServerDemo::getConsole(void) { return mWinConsole; }