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

📄 pcdmsyncfctry.cpp

📁 《Windows CE 权威指南》(作者:(美)CHRIS MUENCH
💻 CPP
字号:
//
//	File:
//	=====
//	PCDMSyncFctry.cpp: Implementation file
//
//	Description:
//	============
//	class factory that creates objects of class CPCDMSyncStore.
//
#include "stdafx.h"
#include <cesync.h>

#include "PCDMSyncStore.h"
#include "PCDMSyncFctry.h"
//																		 
//===================== IUnknown implementation ===========================
//																		 
STDMETHODIMP CPCDMSyncFactory::QueryInterface(const IID& iid, void **ppv)  
{
	if(ppv == NULL)
		return E_INVALIDARG;

    if(::IsEqualIID(iid, IID_IUnknown) || ::IsEqualIID(iid, IID_IClassFactory)) 
	{
        *ppv = static_cast<IClassFactory*>(this);
	}
	else
	{
		*ppv = NULL;
		return E_NOINTERFACE;
	}

    reinterpret_cast<IUnknown*>(*ppv)->AddRef();
    return S_OK;
}

STDMETHODIMP_(ULONG) CPCDMSyncFactory::AddRef(void)
{
	return ::InterlockedIncrement(&m_cRef);
}

STDMETHODIMP_(ULONG) CPCDMSyncFactory::Release()
{
	if(::InterlockedDecrement(&m_cRef) == 0)
	{
		delete this;
		return 0;
	}
	return m_cRef;
}

//																		 
//===================== IClassFactory implementation ===========================
//																		 
STDMETHODIMP CPCDMSyncFactory::CreateInstance(IUnknown *pUnkOuter, const IID& iid, void **ppv)
{
	if(ppv == NULL)
		return E_INVALIDARG;
    
	if(pUnkOuter != NULL)	// cannot aggregate
	{
		*ppv = NULL;
		return CLASS_E_NOAGGREGATION;
	}

    CPCDMSyncStore *pStore = new CPCDMSyncStore();
    if(pStore == NULL)
	{
     	*ppv = NULL;
		return E_OUTOFMEMORY;
	}

	HRESULT hr = pStore->QueryInterface(iid, ppv);
	pStore->Release();

    return hr;
}

STDMETHODIMP CPCDMSyncFactory::LockServer(BOOL fLock)
{
	_Module.LockServer(fLock);
    return S_OK;
}

⌨️ 快捷键说明

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