72 lines
1.4 KiB
C++
72 lines
1.4 KiB
C++
|
#include "priv.h"
|
||
|
#include "cryptmnu.h"
|
||
|
|
||
|
CCryptMenuClassFactory::CCryptMenuClassFactory() {
|
||
|
m_ObjRefCount = 1;
|
||
|
g_DllRefCount++;
|
||
|
}
|
||
|
|
||
|
CCryptMenuClassFactory::~CCryptMenuClassFactory() {
|
||
|
g_DllRefCount--;
|
||
|
}
|
||
|
|
||
|
STDMETHODIMP
|
||
|
CCryptMenuClassFactory::QueryInterface( REFIID iid, void **ppvObject) {
|
||
|
if (IsEqualIID(iid,IID_IUnknown)) {
|
||
|
*ppvObject = (LPUNKNOWN)(LPCLASSFACTORY) this;
|
||
|
m_ObjRefCount++;
|
||
|
return(NOERROR);
|
||
|
}
|
||
|
if (IsEqualIID(iid,IID_IClassFactory)) {
|
||
|
*ppvObject = (LPCLASSFACTORY) this;
|
||
|
m_ObjRefCount++;
|
||
|
return(NOERROR);
|
||
|
}
|
||
|
*ppvObject = NULL;
|
||
|
return(E_NOINTERFACE);
|
||
|
}
|
||
|
|
||
|
STDMETHODIMP_(DWORD)
|
||
|
CCryptMenuClassFactory::AddRef() {
|
||
|
return(++m_ObjRefCount);
|
||
|
}
|
||
|
|
||
|
STDMETHODIMP_(DWORD)
|
||
|
CCryptMenuClassFactory::Release() {
|
||
|
if(--m_ObjRefCount ==0) {
|
||
|
delete this;
|
||
|
}
|
||
|
|
||
|
return(m_ObjRefCount);
|
||
|
}
|
||
|
|
||
|
STDMETHODIMP
|
||
|
CCryptMenuClassFactory::CreateInstance(LPUNKNOWN pUnkOuter,
|
||
|
REFIID riid,
|
||
|
void **ppvObject) {
|
||
|
CCryptMenuExt *pCryptMenu;
|
||
|
HRESULT hr;
|
||
|
|
||
|
*ppvObject = NULL;
|
||
|
|
||
|
if (pUnkOuter) {
|
||
|
return(CLASS_E_NOAGGREGATION);
|
||
|
}
|
||
|
|
||
|
pCryptMenu = new CCryptMenuExt;
|
||
|
if (!pCryptMenu) {
|
||
|
return(E_OUTOFMEMORY);
|
||
|
}
|
||
|
|
||
|
hr = pCryptMenu->QueryInterface(riid,ppvObject);
|
||
|
pCryptMenu->Release();
|
||
|
|
||
|
return hr;
|
||
|
}
|
||
|
|
||
|
STDMETHODIMP
|
||
|
CCryptMenuClassFactory::LockServer(BOOL) {
|
||
|
return(E_NOTIMPL);
|
||
|
}
|
||
|
|