71 lines
1.8 KiB
C++
71 lines
1.8 KiB
C++
#include <test/inproc.hpp>
|
|
|
|
void *InProcServerDemoInstantiator::instantiate(IUnknown *pUnkOuter,REFIID riid,void **ppv)
|
|
{
|
|
ComResult comResult;
|
|
InProcServerDemo *pInProcServerDemo;
|
|
pInProcServerDemo=::new InProcServerDemo(pUnkOuter,riid);
|
|
if(!pInProcServerDemo)throw Instantiator::NoMemory();
|
|
comResult=pInProcServerDemo->QueryInterface(riid,ppv);
|
|
if(comResult.isFailure())
|
|
{
|
|
::delete pInProcServerDemo;
|
|
throw Instantiator::NoInterface();
|
|
}
|
|
return pInProcServerDemo;
|
|
}
|
|
|
|
InProcServerDemo::InProcServerDemo(IUnknown *pUnkOuter,REFIID riid)
|
|
: mValue(0), mRefCount(0)
|
|
{
|
|
// getConsole().writeLine("<InProcServerDemo::InProcServerDemo>");
|
|
if(!IsEqualIID(riid,IID_IDemo))throw Instantiator::NoInterface();
|
|
}
|
|
|
|
InProcServerDemo::~InProcServerDemo()
|
|
{
|
|
// getConsole().writeLine("<InProcServerDemo::~InProcServerDemo>");
|
|
}
|
|
|
|
HRESULT __stdcall InProcServerDemo::getValue(int *pvalue)
|
|
{
|
|
// getConsole().writeLine("<InProcServerDemo::getValue>");
|
|
if(!pvalue)return ComResult::InvalidArg;
|
|
*pvalue=mValue;
|
|
return ComResult::NoError;
|
|
}
|
|
|
|
HRESULT __stdcall InProcServerDemo::setValue(int value)
|
|
{
|
|
// getConsole().writeLine("<InProcServerDemo::setValue>");
|
|
mValue=value;
|
|
return ComResult::NoError;
|
|
}
|
|
|
|
HRESULT __stdcall InProcServerDemo::QueryInterface(REFIID riid,void **ppv)
|
|
{
|
|
// getConsole().writeLine("<InProcServer::QueryInterface>");
|
|
*ppv=0;
|
|
if(IsEqualIID(riid,IID_IUnknown)||IsEqualIID(riid,IID_IDemo))
|
|
{
|
|
*ppv=this;
|
|
AddRef();
|
|
return NOERROR;
|
|
}
|
|
return ComResult::NoInterface;
|
|
}
|
|
|
|
ULONG __stdcall InProcServerDemo::AddRef(void)
|
|
{
|
|
// getConsole().writeLine("<InProcServer::AddRef>");
|
|
return ++mRefCount;
|
|
}
|
|
|
|
ULONG __stdcall InProcServerDemo::Release(void)
|
|
{
|
|
// getConsole().writeLine("<InProcServer::Release>");
|
|
if(0==--mRefCount)::delete this;
|
|
return mRefCount;
|
|
}
|
|
|