Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

71 lines
1.4 KiB

#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);
}