Something went wrong. Try again.
Reactos
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273/* * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS BDA Proxy * FILE: dll/directx/msvidctl/tuningspace_container.cpp * PURPOSE: ITuningSpaceContainer interface * * PROGRAMMERS: Johannes Anderwald (johannes.anderwald@reactos.org) */#define _FORCENAMELESSUNION#include "precomp.h"
class CTuningSpaceContainer : public ITuningSpaceContainer{public:
STDMETHODIMP QueryInterface( REFIID InterfaceId, PVOID* Interface);
STDMETHODIMP_(ULONG) AddRef() { InterlockedIncrement(&m_Ref); return m_Ref; } STDMETHODIMP_(ULONG) Release() { InterlockedDecrement(&m_Ref); if (!m_Ref) { OutputDebugStringW(L"CTuningSpaceContainer::Release : delete\n"); //delete this; return 0; } return m_Ref; }
// IDispatch methods HRESULT STDMETHODCALLTYPE GetTypeInfoCount(UINT *pctinfo); HRESULT STDMETHODCALLTYPE GetTypeInfo(UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo); HRESULT STDMETHODCALLTYPE GetIDsOfNames(REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId); HRESULT STDMETHODCALLTYPE Invoke(DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr);
//ITuningSpaceContainer methods HRESULT STDMETHODCALLTYPE get_Count(long *Count); HRESULT STDMETHODCALLTYPE get__NewEnum(IEnumVARIANT **NewEnum); HRESULT STDMETHODCALLTYPE get_Item(VARIANT varIndex, ITuningSpace **TuningSpace); HRESULT STDMETHODCALLTYPE put_Item(VARIANT varIndex, ITuningSpace *TuningSpace); HRESULT STDMETHODCALLTYPE TuningSpacesForCLSID(BSTR SpaceCLSID, ITuningSpaces **NewColl); HRESULT STDMETHODCALLTYPE _TuningSpacesForCLSID(REFCLSID SpaceCLSID, ITuningSpaces **NewColl); HRESULT STDMETHODCALLTYPE TuningSpacesForName(BSTR Name, ITuningSpaces **NewColl); HRESULT STDMETHODCALLTYPE FindID(ITuningSpace *TuningSpace, long *ID); HRESULT STDMETHODCALLTYPE Add(ITuningSpace *TuningSpace, VARIANT *NewIndex); HRESULT STDMETHODCALLTYPE get_EnumTuningSpaces(IEnumTuningSpaces **ppEnum); HRESULT STDMETHODCALLTYPE Remove(VARIANT Index); HRESULT STDMETHODCALLTYPE get_MaxCount(long *MaxCount); HRESULT STDMETHODCALLTYPE put_MaxCount(long MaxCount);
CTuningSpaceContainer() : m_Ref(0){};
virtual ~CTuningSpaceContainer(){};
protected: LONG m_Ref;
};
HRESULTSTDMETHODCALLTYPECTuningSpaceContainer::QueryInterface( IN REFIID refiid, OUT PVOID* Output){ if (IsEqualGUID(refiid, IID_IUnknown)) { *Output = PVOID(this); reinterpret_cast<IUnknown*>(*Output)->AddRef(); return NOERROR; }
if (IsEqualGUID(refiid, IID_ITuningSpaceContainer)) { *Output = (ITuningSpaceContainer*)this; reinterpret_cast<ITuningSpaceContainer*>(*Output)->AddRef(); return NOERROR; }
WCHAR Buffer[MAX_PATH]; LPOLESTR lpstr; StringFromCLSID(refiid, &lpstr); swprintf(Buffer, L"CTuningSpaceContainer::QueryInterface: NoInterface for %s", lpstr); OutputDebugStringW(Buffer); CoTaskMemFree(lpstr);
return E_NOINTERFACE;}
//-------------------------------------------------------------------// IDispatch methods//HRESULTSTDMETHODCALLTYPECTuningSpaceContainer::GetTypeInfoCount(UINT *pctinfo){ OutputDebugStringW(L"CTuningSpaceContainer::GetTypeInfoCount : NotImplemented\n"); return E_NOTIMPL;}
HRESULTSTDMETHODCALLTYPECTuningSpaceContainer::GetTypeInfo(UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo){ OutputDebugStringW(L"CTuningSpaceContainer::GetTypeInfo : NotImplemented\n"); return E_NOTIMPL;}HRESULTSTDMETHODCALLTYPECTuningSpaceContainer::GetIDsOfNames(REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId){ OutputDebugStringW(L"CTuningSpaceContainer::GetIDsOfNames : NotImplemented\n"); return E_NOTIMPL;}HRESULTSTDMETHODCALLTYPECTuningSpaceContainer::Invoke(DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr){ OutputDebugStringW(L"CTuningSpaceContainer::Invoke : NotImplemented\n"); return E_NOTIMPL;}
//-------------------------------------------------------------------// ITuningSpaceContainer methods//
HRESULTSTDMETHODCALLTYPECTuningSpaceContainer::get_Count(long *Count){ OutputDebugStringW(L"CTuningSpaceContainer::get_Count : NotImplemented\n"); return E_NOTIMPL;}HRESULTSTDMETHODCALLTYPECTuningSpaceContainer::get__NewEnum(IEnumVARIANT **NewEnum){ OutputDebugStringW(L"CTuningSpaceContainer::get__NewEnum : NotImplemented\n"); return E_NOTIMPL;}
HRESULTSTDMETHODCALLTYPECTuningSpaceContainer::get_Item(VARIANT varIndex, ITuningSpace **TuningSpace){#ifdef MSVIDCTL_TRACE WCHAR Buffer[100]; swprintf(Buffer, L"CTuningSpaceContainer::get_Item : type %x value %s stub\n", varIndex.vt, varIndex.bstrVal); OutputDebugStringW(Buffer);#endif
return CTuningSpace_fnConstructor(NULL, IID_ITuningSpace, (void**)TuningSpace);}HRESULTSTDMETHODCALLTYPECTuningSpaceContainer::put_Item(VARIANT varIndex, ITuningSpace *TuningSpace){ OutputDebugStringW(L"CTuningSpaceContainer::put_Item : NotImplemented\n"); return E_NOTIMPL;}
HRESULTSTDMETHODCALLTYPECTuningSpaceContainer::TuningSpacesForCLSID(BSTR SpaceCLSID, ITuningSpaces **NewColl){ OutputDebugStringW(L"CTuningSpaceContainer::TuningSpacesForCLSID : NotImplemented\n"); return E_NOTIMPL;}HRESULTSTDMETHODCALLTYPECTuningSpaceContainer::_TuningSpacesForCLSID(REFCLSID SpaceCLSID, ITuningSpaces **NewColl){ OutputDebugStringW(L"CTuningSpaceContainer::_TuningSpacesForCLSID : NotImplemented\n"); return E_NOTIMPL;}
HRESULTSTDMETHODCALLTYPECTuningSpaceContainer::TuningSpacesForName(BSTR Name, ITuningSpaces **NewColl){ OutputDebugStringW(L"CTuningSpaceContainer::TuningSpacesForName : NotImplemented\n"); return E_NOTIMPL;}
HRESULTSTDMETHODCALLTYPECTuningSpaceContainer::FindID(ITuningSpace *TuningSpace, long *ID){ OutputDebugStringW(L"CTuningSpaceContainer::FindID : NotImplemented\n"); return E_NOTIMPL;}
HRESULTSTDMETHODCALLTYPECTuningSpaceContainer::Add(ITuningSpace *TuningSpace, VARIANT *NewIndex){ OutputDebugStringW(L"CTuningSpaceContainer::Add : stub\n"); TuningSpace->AddRef(); NewIndex->vt = VT_BSTR; InterlockedIncrement(&m_Ref); return TuningSpace->get_FriendlyName(&NewIndex->bstrVal);}HRESULTSTDMETHODCALLTYPECTuningSpaceContainer::get_EnumTuningSpaces(IEnumTuningSpaces **ppEnum){ OutputDebugStringW(L"CTuningSpaceContainer::get_EnumTuningSpaces : stub\n"); return CEnumTuningSpaces_fnConstructor(NULL, IID_IEnumTuningSpaces, (void**)ppEnum);}
HRESULTSTDMETHODCALLTYPECTuningSpaceContainer::Remove(VARIANT Index){ OutputDebugStringW(L"CTuningSpaceContainer::Remove: NotImplemented\n"); return E_NOTIMPL;}
HRESULTSTDMETHODCALLTYPECTuningSpaceContainer::get_MaxCount(long *MaxCount){ OutputDebugStringW(L"CTuningSpaceContainer::get_MaxCount : NotImplemented\n"); return E_NOTIMPL;}
HRESULTSTDMETHODCALLTYPECTuningSpaceContainer::put_MaxCount(long MaxCount){ OutputDebugStringW(L"CTuningSpaceContainer::put_MaxCount : NotImplemented\n"); return E_NOTIMPL;}
HRESULTWINAPICTuningSpaceContainer_fnConstructor( IUnknown *pUnknown, REFIID riid, LPVOID * ppv){ // construct device control CTuningSpaceContainer * provider = new CTuningSpaceContainer();
#ifdef MSVIDCTL_TRACE WCHAR Buffer[MAX_PATH]; LPOLESTR lpstr; StringFromCLSID(riid, &lpstr); swprintf(Buffer, L"CTuningSpaceContainer_fnConstructor riid %s pUnknown %p\n", lpstr, pUnknown); OutputDebugStringW(Buffer);#endif
if (!provider) return E_OUTOFMEMORY;
if (FAILED(provider->QueryInterface(riid, ppv))) { /* not supported */ delete provider; return E_NOINTERFACE; }
return NOERROR;}