📄 pcdmsyncfctry.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 + -