Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygentuningspace_container.cpp
Go to the documentation of this file.
00001 /* 00002 * COPYRIGHT: See COPYING in the top level directory 00003 * PROJECT: ReactOS BDA Proxy 00004 * FILE: dll/directx/msvidctl/tuningspace_container.cpp 00005 * PURPOSE: ITuningSpaceContainer interface 00006 * 00007 * PROGRAMMERS: Johannes Anderwald (janderwald@reactos.org) 00008 */ 00009 #define _FORCENAMELESSUNION 00010 #include "precomp.h" 00011 00012 00013 class CTuningSpaceContainer : public ITuningSpaceContainer 00014 { 00015 public: 00016 00017 STDMETHODIMP QueryInterface( REFIID InterfaceId, PVOID* Interface); 00018 00019 STDMETHODIMP_(ULONG) AddRef() 00020 { 00021 InterlockedIncrement(&m_Ref); 00022 return m_Ref; 00023 } 00024 STDMETHODIMP_(ULONG) Release() 00025 { 00026 InterlockedDecrement(&m_Ref); 00027 if (!m_Ref) 00028 { 00029 OutputDebugStringW(L"CTuningSpaceContainer::Release : delete\n"); 00030 //delete this; 00031 return 0; 00032 } 00033 return m_Ref; 00034 } 00035 00036 // IDispatch methods 00037 HRESULT STDMETHODCALLTYPE GetTypeInfoCount(UINT *pctinfo); 00038 HRESULT STDMETHODCALLTYPE GetTypeInfo(UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo); 00039 HRESULT STDMETHODCALLTYPE GetIDsOfNames(REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId); 00040 HRESULT STDMETHODCALLTYPE Invoke(DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr); 00041 00042 //ITuningSpaceContainer methods 00043 HRESULT STDMETHODCALLTYPE get_Count(long *Count); 00044 HRESULT STDMETHODCALLTYPE get__NewEnum(IEnumVARIANT **NewEnum); 00045 HRESULT STDMETHODCALLTYPE get_Item(VARIANT varIndex, ITuningSpace **TuningSpace); 00046 HRESULT STDMETHODCALLTYPE put_Item(VARIANT varIndex, ITuningSpace *TuningSpace); 00047 HRESULT STDMETHODCALLTYPE TuningSpacesForCLSID(BSTR SpaceCLSID, ITuningSpaces **NewColl); 00048 HRESULT STDMETHODCALLTYPE _TuningSpacesForCLSID(REFCLSID SpaceCLSID, ITuningSpaces **NewColl); 00049 HRESULT STDMETHODCALLTYPE TuningSpacesForName(BSTR Name, ITuningSpaces **NewColl); 00050 HRESULT STDMETHODCALLTYPE FindID(ITuningSpace *TuningSpace, long *ID); 00051 HRESULT STDMETHODCALLTYPE Add(ITuningSpace *TuningSpace, VARIANT *NewIndex); 00052 HRESULT STDMETHODCALLTYPE get_EnumTuningSpaces(IEnumTuningSpaces **ppEnum); 00053 HRESULT STDMETHODCALLTYPE Remove(VARIANT Index); 00054 HRESULT STDMETHODCALLTYPE get_MaxCount(long *MaxCount); 00055 HRESULT STDMETHODCALLTYPE put_MaxCount(long MaxCount); 00056 00057 CTuningSpaceContainer() : m_Ref(0){}; 00058 00059 virtual ~CTuningSpaceContainer(){}; 00060 00061 protected: 00062 LONG m_Ref; 00063 00064 }; 00065 00066 HRESULT 00067 STDMETHODCALLTYPE 00068 CTuningSpaceContainer::QueryInterface( 00069 IN REFIID refiid, 00070 OUT PVOID* Output) 00071 { 00072 if (IsEqualGUID(refiid, IID_IUnknown)) 00073 { 00074 *Output = PVOID(this); 00075 reinterpret_cast<IUnknown*>(*Output)->AddRef(); 00076 return NOERROR; 00077 } 00078 00079 if (IsEqualGUID(refiid, IID_ITuningSpaceContainer)) 00080 { 00081 *Output = (ITuningSpaceContainer*)this; 00082 reinterpret_cast<ITuningSpaceContainer*>(*Output)->AddRef(); 00083 return NOERROR; 00084 } 00085 00086 WCHAR Buffer[MAX_PATH]; 00087 LPOLESTR lpstr; 00088 StringFromCLSID(refiid, &lpstr); 00089 swprintf(Buffer, L"CTuningSpaceContainer::QueryInterface: NoInterface for %s", lpstr); 00090 OutputDebugStringW(Buffer); 00091 CoTaskMemFree(lpstr); 00092 00093 00094 return E_NOINTERFACE; 00095 } 00096 00097 //------------------------------------------------------------------- 00098 // IDispatch methods 00099 // 00100 HRESULT 00101 STDMETHODCALLTYPE 00102 CTuningSpaceContainer::GetTypeInfoCount(UINT *pctinfo) 00103 { 00104 OutputDebugStringW(L"CTuningSpaceContainer::GetTypeInfoCount : NotImplemented\n"); 00105 return E_NOTIMPL; 00106 } 00107 00108 HRESULT 00109 STDMETHODCALLTYPE 00110 CTuningSpaceContainer::GetTypeInfo(UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo) 00111 { 00112 OutputDebugStringW(L"CTuningSpaceContainer::GetTypeInfo : NotImplemented\n"); 00113 return E_NOTIMPL; 00114 } 00115 HRESULT 00116 STDMETHODCALLTYPE 00117 CTuningSpaceContainer::GetIDsOfNames(REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId) 00118 { 00119 OutputDebugStringW(L"CTuningSpaceContainer::GetIDsOfNames : NotImplemented\n"); 00120 return E_NOTIMPL; 00121 } 00122 HRESULT 00123 STDMETHODCALLTYPE 00124 CTuningSpaceContainer::Invoke(DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr) 00125 { 00126 OutputDebugStringW(L"CTuningSpaceContainer::Invoke : NotImplemented\n"); 00127 return E_NOTIMPL; 00128 } 00129 00130 //------------------------------------------------------------------- 00131 // ITuningSpaceContainer methods 00132 // 00133 00134 HRESULT 00135 STDMETHODCALLTYPE 00136 CTuningSpaceContainer::get_Count(long *Count) 00137 { 00138 OutputDebugStringW(L"CTuningSpaceContainer::get_Count : NotImplemented\n"); 00139 return E_NOTIMPL; 00140 } 00141 HRESULT 00142 STDMETHODCALLTYPE 00143 CTuningSpaceContainer::get__NewEnum(IEnumVARIANT **NewEnum) 00144 { 00145 OutputDebugStringW(L"CTuningSpaceContainer::get__NewEnum : NotImplemented\n"); 00146 return E_NOTIMPL; 00147 } 00148 00149 HRESULT 00150 STDMETHODCALLTYPE 00151 CTuningSpaceContainer::get_Item(VARIANT varIndex, ITuningSpace **TuningSpace) 00152 { 00153 #ifdef MSVIDCTL_TRACE 00154 WCHAR Buffer[100]; 00155 swprintf(Buffer, L"CTuningSpaceContainer::get_Item : type %x value %s stub\n", varIndex.vt, varIndex.bstrVal); 00156 OutputDebugStringW(Buffer); 00157 #endif 00158 00159 return CTuningSpace_fnConstructor(NULL, IID_ITuningSpace, (void**)TuningSpace); 00160 } 00161 HRESULT 00162 STDMETHODCALLTYPE 00163 CTuningSpaceContainer::put_Item(VARIANT varIndex, ITuningSpace *TuningSpace) 00164 { 00165 OutputDebugStringW(L"CTuningSpaceContainer::put_Item : NotImplemented\n"); 00166 return E_NOTIMPL; 00167 } 00168 00169 HRESULT 00170 STDMETHODCALLTYPE 00171 CTuningSpaceContainer::TuningSpacesForCLSID(BSTR SpaceCLSID, ITuningSpaces **NewColl) 00172 { 00173 OutputDebugStringW(L"CTuningSpaceContainer::TuningSpacesForCLSID : NotImplemented\n"); 00174 return E_NOTIMPL; 00175 } 00176 HRESULT 00177 STDMETHODCALLTYPE 00178 CTuningSpaceContainer::_TuningSpacesForCLSID(REFCLSID SpaceCLSID, ITuningSpaces **NewColl) 00179 { 00180 OutputDebugStringW(L"CTuningSpaceContainer::_TuningSpacesForCLSID : NotImplemented\n"); 00181 return E_NOTIMPL; 00182 } 00183 00184 HRESULT 00185 STDMETHODCALLTYPE 00186 CTuningSpaceContainer::TuningSpacesForName(BSTR Name, ITuningSpaces **NewColl) 00187 { 00188 OutputDebugStringW(L"CTuningSpaceContainer::TuningSpacesForName : NotImplemented\n"); 00189 return E_NOTIMPL; 00190 } 00191 00192 HRESULT 00193 STDMETHODCALLTYPE 00194 CTuningSpaceContainer::FindID(ITuningSpace *TuningSpace, long *ID) 00195 { 00196 OutputDebugStringW(L"CTuningSpaceContainer::FindID : NotImplemented\n"); 00197 return E_NOTIMPL; 00198 } 00199 00200 HRESULT 00201 STDMETHODCALLTYPE 00202 CTuningSpaceContainer::Add(ITuningSpace *TuningSpace, VARIANT *NewIndex) 00203 { 00204 OutputDebugStringW(L"CTuningSpaceContainer::Add : stub\n"); 00205 TuningSpace->AddRef(); 00206 NewIndex->vt = VT_BSTR; 00207 InterlockedIncrement(&m_Ref); 00208 return TuningSpace->get_FriendlyName(&NewIndex->bstrVal);; 00209 } 00210 HRESULT 00211 STDMETHODCALLTYPE 00212 CTuningSpaceContainer::get_EnumTuningSpaces(IEnumTuningSpaces **ppEnum) 00213 { 00214 OutputDebugStringW(L"CTuningSpaceContainer::get_EnumTuningSpaces : stub\n"); 00215 return CEnumTuningSpaces_fnConstructor(NULL, IID_IEnumTuningSpaces, (void**)ppEnum); 00216 } 00217 00218 HRESULT 00219 STDMETHODCALLTYPE 00220 CTuningSpaceContainer::Remove(VARIANT Index) 00221 { 00222 OutputDebugStringW(L"CTuningSpaceContainer::Remove: NotImplemented\n"); 00223 return E_NOTIMPL; 00224 } 00225 00226 HRESULT 00227 STDMETHODCALLTYPE 00228 CTuningSpaceContainer::get_MaxCount(long *MaxCount) 00229 { 00230 OutputDebugStringW(L"CTuningSpaceContainer::get_MaxCount : NotImplemented\n"); 00231 return E_NOTIMPL; 00232 } 00233 00234 HRESULT 00235 STDMETHODCALLTYPE 00236 CTuningSpaceContainer::put_MaxCount(long MaxCount) 00237 { 00238 OutputDebugStringW(L"CTuningSpaceContainer::put_MaxCount : NotImplemented\n"); 00239 return E_NOTIMPL; 00240 } 00241 00242 00243 HRESULT 00244 WINAPI 00245 CTuningSpaceContainer_fnConstructor( 00246 IUnknown *pUnknown, 00247 REFIID riid, 00248 LPVOID * ppv) 00249 { 00250 // construct device control 00251 CTuningSpaceContainer * provider = new CTuningSpaceContainer(); 00252 00253 #ifdef MSVIDCTL_TRACE 00254 WCHAR Buffer[MAX_PATH]; 00255 LPOLESTR lpstr; 00256 StringFromCLSID(riid, &lpstr); 00257 swprintf(Buffer, L"CTuningSpaceContainer_fnConstructor riid %s pUnknown %p\n", lpstr, pUnknown); 00258 OutputDebugStringW(Buffer); 00259 #endif 00260 00261 if (!provider) 00262 return E_OUTOFMEMORY; 00263 00264 if (FAILED(provider->QueryInterface(riid, ppv))) 00265 { 00266 /* not supported */ 00267 delete provider; 00268 return E_NOINTERFACE; 00269 } 00270 00271 return NOERROR; 00272 } Generated on Sun May 27 2012 04:21:53 for ReactOS by
1.7.6.1
|