All pastes #485580 Raw Edit

Something

public c v1 · immutable
·published 2007-05-13 02:39 UTC
rendered paste body
/* code: */#include <objbase.h>#include "com_main.h"#include "tracemsg.h"EXPORT IUnknown* CreateInstance(){	TraceMsg tm("CreateInstance");	IUnknown* pIUnknown = (ITest*) new CTest;	return pIUnknown;}CTest::CTest(){	TraceMsg tm("CTest::CTest");	this->refCount=0;	this->topSecret=0;}HRESULT __stdcall CTest::QueryInterface(const IID& iid, void** ppv){	TraceMsg tm("CTest::QueryInterface");	if (iid == IID_IUnknown) {		tm.msg("Asking for IUnknown, returning pointer");		*ppv = (IUnknown*)this;	}	else if (iid == IID_ITest) {		tm.msg("Asking for ITest, returning pointer");		*ppv = (ITest*)this;	} else {		tm.msg("Asking for unrecognized or unimplemented interface, returning error");		*ppv = NULL;		return E_NOINTERFACE;	}	this->AddRef();	return S_OK;}ULONG __stdcall CTest::AddRef(){	TraceMsg tm("CTest::AddRef");	tm.msg("Incrementing reference count");	this->refCount++;	tm.msg("%d references existing",this->refCount);	return this->refCount;}ULONG __stdcall CTest::Release(){	TraceMsg tm("CTest::Release");	tm.msg("Decrementing reference count");	if(--this->refCount == 0) {		tm.msg("No references left, freeing object");		delete this;		return 0;	}	tm.msg("%d references existing",this->refCount);	return this->refCount;}void __stdcall CTest::SetNumber(long number){	TraceMsg tm("CTest::SetNumber");	tm.msg("Number changed from %d to %d",this->topSecret, number);	this->topSecret = number;}long __stdcall CTest::GetNumber(){	TraceMsg tm("CTest::GetNumber");	tm.msg("Retrieving number (%d)",this->topSecret);	return this->topSecret;}/*output:CreateInstance{ CTest::CTest { }}CTest::QueryInterface{ msg: Asking for ITest, returning pointer CTest::AddRef {  msg: Incrementing reference count  msg: 1 references existing }}CTest::SetNumber{ msg: Number changed from 0 to 42}CTest::GetNumber{ msg: Retrieving number (42)}CTest::Release{ msg: Decrementing reference count msg: No references left, freeing object}*/