2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS BDA Proxy
4 * FILE: dll/directx/msvidctl/tuningspace_container.cpp
5 * PURPOSE: ITuningSpaceContainer interface
7 * PROGRAMMERS: Johannes Anderwald (janderwald@reactos.org)
9 #define _FORCENAMELESSUNION
13 class CTuningSpaceContainer
: public ITuningSpaceContainer
17 STDMETHODIMP
QueryInterface( REFIID InterfaceId
, PVOID
* Interface
);
19 STDMETHODIMP_(ULONG
) AddRef()
21 InterlockedIncrement(&m_Ref
);
24 STDMETHODIMP_(ULONG
) Release()
26 InterlockedDecrement(&m_Ref
);
29 OutputDebugStringW(L
"CTuningSpaceContainer::Release : delete\n");
37 HRESULT STDMETHODCALLTYPE
GetTypeInfoCount(UINT
*pctinfo
);
38 HRESULT STDMETHODCALLTYPE
GetTypeInfo(UINT iTInfo
, LCID lcid
, ITypeInfo
**ppTInfo
);
39 HRESULT STDMETHODCALLTYPE
GetIDsOfNames(REFIID riid
, LPOLESTR
*rgszNames
, UINT cNames
, LCID lcid
, DISPID
*rgDispId
);
40 HRESULT STDMETHODCALLTYPE
Invoke(DISPID dispIdMember
, REFIID riid
, LCID lcid
, WORD wFlags
, DISPPARAMS
*pDispParams
, VARIANT
*pVarResult
, EXCEPINFO
*pExcepInfo
, UINT
*puArgErr
);
42 //ITuningSpaceContainer methods
43 HRESULT STDMETHODCALLTYPE
get_Count(long *Count
);
44 HRESULT STDMETHODCALLTYPE
get__NewEnum(IEnumVARIANT
**NewEnum
);
45 HRESULT STDMETHODCALLTYPE
get_Item(VARIANT varIndex
, ITuningSpace
**TuningSpace
);
46 HRESULT STDMETHODCALLTYPE
put_Item(VARIANT varIndex
, ITuningSpace
*TuningSpace
);
47 HRESULT STDMETHODCALLTYPE
TuningSpacesForCLSID(BSTR SpaceCLSID
, ITuningSpaces
**NewColl
);
48 HRESULT STDMETHODCALLTYPE
_TuningSpacesForCLSID(REFCLSID SpaceCLSID
, ITuningSpaces
**NewColl
);
49 HRESULT STDMETHODCALLTYPE
TuningSpacesForName(BSTR Name
, ITuningSpaces
**NewColl
);
50 HRESULT STDMETHODCALLTYPE
FindID(ITuningSpace
*TuningSpace
, long *ID
);
51 HRESULT STDMETHODCALLTYPE
Add(ITuningSpace
*TuningSpace
, VARIANT
*NewIndex
);
52 HRESULT STDMETHODCALLTYPE
get_EnumTuningSpaces(IEnumTuningSpaces
**ppEnum
);
53 HRESULT STDMETHODCALLTYPE
Remove(VARIANT Index
);
54 HRESULT STDMETHODCALLTYPE
get_MaxCount(long *MaxCount
);
55 HRESULT STDMETHODCALLTYPE
put_MaxCount(long MaxCount
);
57 CTuningSpaceContainer() : m_Ref(0){};
59 virtual ~CTuningSpaceContainer(){};
68 CTuningSpaceContainer::QueryInterface(
72 if (IsEqualGUID(refiid
, IID_IUnknown
))
74 *Output
= PVOID(this);
75 reinterpret_cast<IUnknown
*>(*Output
)->AddRef();
79 if (IsEqualGUID(refiid
, IID_ITuningSpaceContainer
))
81 *Output
= (ITuningSpaceContainer
*)this;
82 reinterpret_cast<ITuningSpaceContainer
*>(*Output
)->AddRef();
86 WCHAR Buffer
[MAX_PATH
];
88 StringFromCLSID(refiid
, &lpstr
);
89 swprintf(Buffer
, L
"CTuningSpaceContainer::QueryInterface: NoInterface for %s", lpstr
);
90 OutputDebugStringW(Buffer
);
97 //-------------------------------------------------------------------
102 CTuningSpaceContainer::GetTypeInfoCount(UINT
*pctinfo
)
104 OutputDebugStringW(L
"CTuningSpaceContainer::GetTypeInfoCount : NotImplemented\n");
110 CTuningSpaceContainer::GetTypeInfo(UINT iTInfo
, LCID lcid
, ITypeInfo
**ppTInfo
)
112 OutputDebugStringW(L
"CTuningSpaceContainer::GetTypeInfo : NotImplemented\n");
117 CTuningSpaceContainer::GetIDsOfNames(REFIID riid
, LPOLESTR
*rgszNames
, UINT cNames
, LCID lcid
, DISPID
*rgDispId
)
119 OutputDebugStringW(L
"CTuningSpaceContainer::GetIDsOfNames : NotImplemented\n");
124 CTuningSpaceContainer::Invoke(DISPID dispIdMember
, REFIID riid
, LCID lcid
, WORD wFlags
, DISPPARAMS
*pDispParams
, VARIANT
*pVarResult
, EXCEPINFO
*pExcepInfo
, UINT
*puArgErr
)
126 OutputDebugStringW(L
"CTuningSpaceContainer::Invoke : NotImplemented\n");
130 //-------------------------------------------------------------------
131 // ITuningSpaceContainer methods
136 CTuningSpaceContainer::get_Count(long *Count
)
138 OutputDebugStringW(L
"CTuningSpaceContainer::get_Count : NotImplemented\n");
143 CTuningSpaceContainer::get__NewEnum(IEnumVARIANT
**NewEnum
)
145 OutputDebugStringW(L
"CTuningSpaceContainer::get__NewEnum : NotImplemented\n");
151 CTuningSpaceContainer::get_Item(VARIANT varIndex
, ITuningSpace
**TuningSpace
)
153 #ifdef MSVIDCTL_TRACE
155 swprintf(Buffer
, L
"CTuningSpaceContainer::get_Item : type %x value %s stub\n", varIndex
.vt
, varIndex
.bstrVal
);
156 OutputDebugStringW(Buffer
);
159 return CTuningSpace_fnConstructor(NULL
, IID_ITuningSpace
, (void**)TuningSpace
);
163 CTuningSpaceContainer::put_Item(VARIANT varIndex
, ITuningSpace
*TuningSpace
)
165 OutputDebugStringW(L
"CTuningSpaceContainer::put_Item : NotImplemented\n");
171 CTuningSpaceContainer::TuningSpacesForCLSID(BSTR SpaceCLSID
, ITuningSpaces
**NewColl
)
173 OutputDebugStringW(L
"CTuningSpaceContainer::TuningSpacesForCLSID : NotImplemented\n");
178 CTuningSpaceContainer::_TuningSpacesForCLSID(REFCLSID SpaceCLSID
, ITuningSpaces
**NewColl
)
180 OutputDebugStringW(L
"CTuningSpaceContainer::_TuningSpacesForCLSID : NotImplemented\n");
186 CTuningSpaceContainer::TuningSpacesForName(BSTR Name
, ITuningSpaces
**NewColl
)
188 OutputDebugStringW(L
"CTuningSpaceContainer::TuningSpacesForName : NotImplemented\n");
194 CTuningSpaceContainer::FindID(ITuningSpace
*TuningSpace
, long *ID
)
196 OutputDebugStringW(L
"CTuningSpaceContainer::FindID : NotImplemented\n");
202 CTuningSpaceContainer::Add(ITuningSpace
*TuningSpace
, VARIANT
*NewIndex
)
204 OutputDebugStringW(L
"CTuningSpaceContainer::Add : stub\n");
205 TuningSpace
->AddRef();
206 NewIndex
->vt
= VT_BSTR
;
207 InterlockedIncrement(&m_Ref
);
208 return TuningSpace
->get_FriendlyName(&NewIndex
->bstrVal
);;
212 CTuningSpaceContainer::get_EnumTuningSpaces(IEnumTuningSpaces
**ppEnum
)
214 OutputDebugStringW(L
"CTuningSpaceContainer::get_EnumTuningSpaces : stub\n");
215 return CEnumTuningSpaces_fnConstructor(NULL
, IID_IEnumTuningSpaces
, (void**)ppEnum
);
220 CTuningSpaceContainer::Remove(VARIANT Index
)
222 OutputDebugStringW(L
"CTuningSpaceContainer::Remove: NotImplemented\n");
228 CTuningSpaceContainer::get_MaxCount(long *MaxCount
)
230 OutputDebugStringW(L
"CTuningSpaceContainer::get_MaxCount : NotImplemented\n");
236 CTuningSpaceContainer::put_MaxCount(long MaxCount
)
238 OutputDebugStringW(L
"CTuningSpaceContainer::put_MaxCount : NotImplemented\n");
245 CTuningSpaceContainer_fnConstructor(
250 // construct device control
251 CTuningSpaceContainer
* provider
= new CTuningSpaceContainer();
253 #ifdef MSVIDCTL_TRACE
254 WCHAR Buffer
[MAX_PATH
];
256 StringFromCLSID(riid
, &lpstr
);
257 swprintf(Buffer
, L
"CTuningSpaceContainer_fnConstructor riid %s pUnknown %p\n", lpstr
, pUnknown
);
258 OutputDebugStringW(Buffer
);
262 return E_OUTOFMEMORY
;
264 if (FAILED(provider
->QueryInterface(riid
, ppv
)))
268 return E_NOINTERFACE
;