ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

tuningspace_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 doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.