Windows NT 4.0 source code leak
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.
 
 
 
 
 
 

97 lines
1.9 KiB

#include "project.hpp"
#pragma hdrstop
#include "ambient.hpp"
#include <olectl.h>
CAmbientDispatch::CAmbientDispatch(CSite * pSite, LPUNKNOWN pUnk)
{
_dwRef = 0;
_Site = pSite;
_pUnkOuter = pUnk;
}
CAmbientDispatch::CAmbientDispatch()
{
}
CAmbientDispatch::~CAmbientDispatch()
{
}
// IUnknown methods
STDMETHODIMP_(ULONG) CAmbientDispatch::AddRef(void)
{
++_dwRef;
return _pUnkOuter->AddRef();
}
STDMETHODIMP_(ULONG) CAmbientDispatch::Release(void)
{
--_dwRef;
return _pUnkOuter->Release();
}
STDMETHODIMP CAmbientDispatch::QueryInterface(REFIID riid, LPVOID *ppvObj)
{
return _pUnkOuter->QueryInterface(riid, ppvObj);
}
STDMETHODIMP CAmbientDispatch::Invoke(LONG DispId, REFIID riid, LCID locale, USHORT wFlags,
DISPPARAMS * pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
{
ASSERT(pVarResult != NULL);
if ((pVarResult != NULL) && (wFlags == DISPATCH_PROPERTYGET) && (DispId == DISPID_AMBIENT_USERMODE))
{
pVarResult->vt = VT_BOOL;
pVarResult->bool = TRUE;
return S_OK;
}
if ((pVarResult != NULL) && (wFlags == DISPATCH_PROPERTYGET) && (DispId == DISPID_AMBIENT_SHOWHATCHING))
{
pVarResult->vt = VT_BOOL;
pVarResult->bool = FALSE;
return S_OK;
}
if ((pVarResult != NULL) && (wFlags == DISPATCH_PROPERTYGET) && (DispId == DISPID_AMBIENT_SHOWGRABHANDLES))
{
pVarResult->vt = VT_BOOL;
pVarResult->bool = FALSE;
return S_OK;
}
return E_FAIL;
}
STDMETHODIMP CAmbientDispatch::GetIDsOfNames(REFIID riid, OLECHAR ** rgszNames, UINT cNames, LCID lcid,
DISPID * rgDispId)
{
ASSERT(riid == IID_NULL);
ASSERT(rgszNames != NULL);
HRESULT hr = S_OK;
if (!(IsEqualIID(riid, IID_NULL)))
hr = DISP_E_UNKNOWNINTERFACE;
return E_NOTIMPL;
}
STDMETHODIMP CAmbientDispatch::GetTypeInfo(UINT itInfo, LCID lcid, ITypeInfo ** ppTypeInfo)
{
ASSERT(ppTypeInfo != NULL);
return E_NOTIMPL;
}
STDMETHODIMP CAmbientDispatch::GetTypeInfoCount(UINT *pctInfo)
{
ASSERT(pctInfo != NULL);
return E_NOTIMPL;
}