⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stopwatchclassfactory.cpp

📁 没有什么可以说的 自己看
💻 CPP
字号:
// StopwatchClassFactory.cpp: implementation of the CStopwatchClassFactory class.
//
//////////////////////////////////////////////////////////////////////

#include "StopwatchClassFactory.h"
#include "Stopwatch.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

extern long g_nServerLockCount;

CStopwatchClassFactory::CStopwatchClassFactory()
{	
	m_nReferenceCount=0;
}

CStopwatchClassFactory::~CStopwatchClassFactory()
{

}

HRESULT _stdcall CStopwatchClassFactory::QueryInterface(
														REFIID riid,
														void **ppvObject)
{
	HRESULT hr=S_OK;

	if (riid==IID_IUnknown)
		*ppvObject=static_cast<IUnknown*>(static_cast<IClassFactory*>(this));
	else if (riid==IID_IClassFactory)
		
		*ppvObject=static_cast<IClassFactory*>(this);
	else
	{
		ppvObject=NULL;
		hr=E_NOINTERFACE;
	}

	if (SUCCEEDED(hr))
		(static_cast<IUnknown*>(*ppvObject))->AddRef();
	
	return hr;
}

unsigned long _stdcall CStopwatchClassFactory::AddRef()
{
	if (InterlockedIncrement(&m_nReferenceCount)==1)
		InterlockedIncrement(&g_nServerLockCount);
	return m_nReferenceCount;
}

unsigned long _stdcall CStopwatchClassFactory::Release()
{
	if (InterlockedDecrement(&m_nReferenceCount)==0)
	{
		delete this;
		InterlockedDecrement(&g_nServerLockCount);
		return 0;
	}
	return m_nReferenceCount;
}

HRESULT _stdcall CStopwatchClassFactory::CreateInstance(
														IUnknown *pUnkOuter,
														REFIID riid,
														void **ppvObject)
{
	HRESULT hr;
	CStopwatch *pStopwatch= new CStopwatch;

	hr=pStopwatch->QueryInterface(riid,ppvObject);
	if (FAILED(hr))
		delete pStopwatch;
	return hr;
}

HRESULT _stdcall CStopwatchClassFactory::LockServer(BOOL fLock)
{
	if (fLock )
		InterlockedIncrement(&g_nServerLockCount);
	else
		InterlockedDecrement(&g_nServerLockCount);
	return  S_OK;
}



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -