Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygentuningspace.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.cpp 00005 * PURPOSE: ITuningSpace interface 00006 * 00007 * PROGRAMMERS: Johannes Anderwald (janderwald@reactos.org) 00008 */ 00009 #include "precomp.h" 00010 00011 const GUID CLSID_DVBTNetworkProvider = {0x216c62df, 0x6d7f, 0x4e9a, {0x85, 0x71, 0x5, 0xf1, 0x4e, 0xdb, 0x76, 0x6a}}; 00012 00013 class CTuningSpace : public IDVBTuningSpace 00014 { 00015 public: 00016 STDMETHODIMP QueryInterface( REFIID InterfaceId, PVOID* Interface); 00017 00018 STDMETHODIMP_(ULONG) AddRef() 00019 { 00020 InterlockedIncrement(&m_Ref); 00021 return m_Ref; 00022 } 00023 STDMETHODIMP_(ULONG) Release() 00024 { 00025 InterlockedDecrement(&m_Ref); 00026 00027 WCHAR Buffer[100]; 00028 swprintf(Buffer, L"CTuningSpace::Release : %p Ref %lu\n", this, m_Ref); 00029 OutputDebugStringW(Buffer); 00030 00031 if (!m_Ref) 00032 { 00033 //delete this; 00034 return 0; 00035 } 00036 return m_Ref; 00037 } 00038 00039 // IDispatch methods 00040 HRESULT STDMETHODCALLTYPE GetTypeInfoCount(UINT *pctinfo); 00041 HRESULT STDMETHODCALLTYPE GetTypeInfo(UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo); 00042 HRESULT STDMETHODCALLTYPE GetIDsOfNames(REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId); 00043 HRESULT STDMETHODCALLTYPE Invoke(DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr); 00044 00045 00046 //ITuningSpace methods 00047 HRESULT STDMETHODCALLTYPE get_UniqueName(BSTR *Name); 00048 HRESULT STDMETHODCALLTYPE put_UniqueName(BSTR Name); 00049 HRESULT STDMETHODCALLTYPE get_FriendlyName(BSTR *Name); 00050 HRESULT STDMETHODCALLTYPE put_FriendlyName(BSTR Name); 00051 HRESULT STDMETHODCALLTYPE get_CLSID(BSTR *SpaceCLSID); 00052 HRESULT STDMETHODCALLTYPE get_NetworkType(BSTR *NetworkTypeGuid); 00053 HRESULT STDMETHODCALLTYPE put_NetworkType(BSTR NetworkTypeGuid); 00054 HRESULT STDMETHODCALLTYPE get__NetworkType(GUID *NetworkTypeGuid); 00055 HRESULT STDMETHODCALLTYPE put__NetworkType(REFCLSID NetworkTypeGuid); 00056 HRESULT STDMETHODCALLTYPE CreateTuneRequest(ITuneRequest **TuneRequest); 00057 HRESULT STDMETHODCALLTYPE EnumCategoryGUIDs(IEnumGUID **ppEnum); 00058 HRESULT STDMETHODCALLTYPE EnumDeviceMonikers(IEnumMoniker **ppEnum); 00059 HRESULT STDMETHODCALLTYPE get_DefaultPreferredComponentTypes(IComponentTypes **ComponentTypes); 00060 HRESULT STDMETHODCALLTYPE put_DefaultPreferredComponentTypes(IComponentTypes *NewComponentTypes); 00061 HRESULT STDMETHODCALLTYPE get_FrequencyMapping(BSTR *pMapping); 00062 HRESULT STDMETHODCALLTYPE put_FrequencyMapping(BSTR Mapping); 00063 HRESULT STDMETHODCALLTYPE get_DefaultLocator(ILocator **LocatorVal); 00064 HRESULT STDMETHODCALLTYPE put_DefaultLocator(ILocator *LocatorVal); 00065 HRESULT STDMETHODCALLTYPE Clone(ITuningSpace **NewTS); 00066 // IDVBTuningSpace 00067 HRESULT STDMETHODCALLTYPE get_SystemType(DVBSystemType *SysType); 00068 HRESULT STDMETHODCALLTYPE put_SystemType(DVBSystemType SysType); 00069 00070 CTuningSpace() : m_Ref(0){}; 00071 00072 virtual ~CTuningSpace(){}; 00073 00074 protected: 00075 LONG m_Ref; 00076 }; 00077 00078 HRESULT 00079 STDMETHODCALLTYPE 00080 CTuningSpace::QueryInterface( 00081 IN REFIID refiid, 00082 OUT PVOID* Output) 00083 { 00084 if (IsEqualGUID(refiid, IID_IUnknown)) 00085 { 00086 *Output = PVOID(this); 00087 reinterpret_cast<IUnknown*>(*Output)->AddRef(); 00088 return NOERROR; 00089 } 00090 00091 if (IsEqualGUID(refiid, IID_ITuningSpace)) 00092 { 00093 *Output = (ITuningSpace*)this; 00094 reinterpret_cast<ITuningSpace*>(*Output)->AddRef(); 00095 return NOERROR; 00096 } 00097 00098 if (IsEqualGUID(refiid, IID_IDVBTuningSpace)) 00099 { 00100 *Output = (IDVBTuningSpace*)this; 00101 reinterpret_cast<IDVBTuningSpace*>(*Output)->AddRef(); 00102 return NOERROR; 00103 } 00104 00105 00106 WCHAR Buffer[MAX_PATH]; 00107 LPOLESTR lpstr; 00108 StringFromCLSID(refiid, &lpstr); 00109 swprintf(Buffer, L"CTuningSpace::QueryInterface: NoInterface for %s", lpstr); 00110 OutputDebugStringW(Buffer); 00111 CoTaskMemFree(lpstr); 00112 00113 00114 return E_NOINTERFACE; 00115 } 00116 00117 //------------------------------------------------------------------- 00118 // IDispatch methods 00119 // 00120 HRESULT 00121 STDMETHODCALLTYPE 00122 CTuningSpace::GetTypeInfoCount(UINT *pctinfo) 00123 { 00124 OutputDebugStringW(L"CTuningSpace::GetTypeInfoCount : NotImplemented\n"); 00125 return E_NOTIMPL; 00126 } 00127 00128 HRESULT 00129 STDMETHODCALLTYPE 00130 CTuningSpace::GetTypeInfo(UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo) 00131 { 00132 OutputDebugStringW(L"CTuningSpace::GetTypeInfo : NotImplemented\n"); 00133 return E_NOTIMPL; 00134 } 00135 HRESULT 00136 STDMETHODCALLTYPE 00137 CTuningSpace::GetIDsOfNames(REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId) 00138 { 00139 OutputDebugStringW(L"CTuningSpace::GetIDsOfNames : NotImplemented\n"); 00140 return E_NOTIMPL; 00141 } 00142 HRESULT 00143 STDMETHODCALLTYPE 00144 CTuningSpace::Invoke(DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr) 00145 { 00146 OutputDebugStringW(L"CTuningSpace::Invoke : NotImplemented\n"); 00147 return E_NOTIMPL; 00148 } 00149 00150 00151 //------------------------------------------------------------------- 00152 // ITuningSpace interface 00153 // 00154 00155 HRESULT 00156 STDMETHODCALLTYPE 00157 CTuningSpace::get_UniqueName(BSTR *Name) 00158 { 00159 OutputDebugStringW(L"CTuningSpace::get_UniqueName : NotImplemented\n"); 00160 return E_NOTIMPL; 00161 } 00162 00163 HRESULT 00164 STDMETHODCALLTYPE 00165 CTuningSpace::put_UniqueName(BSTR Name) 00166 { 00167 OutputDebugStringW(L"CTuningSpace::put_UniqueName : NotImplemented\n"); 00168 return E_NOTIMPL; 00169 } 00170 00171 HRESULT 00172 STDMETHODCALLTYPE 00173 CTuningSpace::get_FriendlyName(BSTR *Name) 00174 { 00175 OutputDebugStringW(L"CTuningSpace::get_FriendlyName : NotImplemented\n"); 00176 return E_NOTIMPL; 00177 } 00178 00179 HRESULT 00180 STDMETHODCALLTYPE 00181 CTuningSpace::put_FriendlyName(BSTR Name) 00182 { 00183 OutputDebugStringW(L"CTuningSpace::put_FriendlyName : NotImplemented\n"); 00184 return E_NOTIMPL; 00185 } 00186 00187 HRESULT 00188 STDMETHODCALLTYPE 00189 CTuningSpace::get_CLSID(BSTR *SpaceCLSID) 00190 { 00191 OutputDebugStringW(L"CTuningSpace::get_CLSID : NotImplemented\n"); 00192 return E_NOTIMPL; 00193 } 00194 00195 HRESULT 00196 STDMETHODCALLTYPE 00197 CTuningSpace::get_NetworkType(BSTR *NetworkTypeGuid) 00198 { 00199 OutputDebugStringW(L"CTuningSpace::get_NetworkType : stub\n"); 00200 return StringFromCLSID(CLSID_DVBTNetworkProvider, (LPOLESTR*)NetworkTypeGuid); 00201 00202 } 00203 00204 HRESULT 00205 STDMETHODCALLTYPE 00206 CTuningSpace::put_NetworkType(BSTR NetworkTypeGuid) 00207 { 00208 OutputDebugStringW(L"CTuningSpace::put_NetworkType : NotImplemented\n"); 00209 return E_NOTIMPL; 00210 } 00211 00212 HRESULT 00213 STDMETHODCALLTYPE 00214 CTuningSpace::get__NetworkType(GUID *NetworkTypeGuid) 00215 { 00216 #ifdef MSVIDCTL_TRACE 00217 WCHAR Buffer[100]; 00218 swprintf(Buffer, L"CTuningSpace::get__NetworkType : %p stub\n", NetworkTypeGuid); 00219 OutputDebugStringW(Buffer); 00220 #endif 00221 00222 CopyMemory(NetworkTypeGuid, &CLSID_DVBTNetworkProvider, sizeof(GUID)); 00223 OutputDebugStringW(L"CTuningSpace::get__NetworkType : done\n"); 00224 return S_OK; 00225 } 00226 00227 HRESULT 00228 STDMETHODCALLTYPE 00229 CTuningSpace::put__NetworkType(REFCLSID NetworkTypeGuid) 00230 { 00231 OutputDebugStringW(L"CTuningSpace::put__NetworkType : NotImplemented\n"); 00232 return E_NOTIMPL; 00233 } 00234 00235 HRESULT 00236 STDMETHODCALLTYPE 00237 CTuningSpace::CreateTuneRequest(ITuneRequest **TuneRequest) 00238 { 00239 OutputDebugStringW(L"CTuningSpace::CreateTuneRequest : stub\n"); 00240 return CTuneRequest_fnConstructor(NULL, (ITuningSpace*)this, IID_ITuneRequest, (void**)TuneRequest); 00241 } 00242 00243 HRESULT 00244 STDMETHODCALLTYPE 00245 CTuningSpace::EnumCategoryGUIDs(IEnumGUID **ppEnum) 00246 { 00247 OutputDebugStringW(L"CTuningSpace::EnumCategoryGUIDs : NotImplemented\n"); 00248 return E_NOTIMPL; 00249 } 00250 00251 HRESULT 00252 STDMETHODCALLTYPE 00253 CTuningSpace::EnumDeviceMonikers(IEnumMoniker **ppEnum) 00254 { 00255 OutputDebugStringW(L"CTuningSpace::EnumDeviceMonikers : NotImplemented\n"); 00256 return E_NOTIMPL; 00257 } 00258 00259 HRESULT 00260 STDMETHODCALLTYPE 00261 CTuningSpace::get_DefaultPreferredComponentTypes(IComponentTypes **ComponentTypes) 00262 { 00263 OutputDebugStringW(L"CTuningSpace::get_DefaultPreferredComponentTypes : NotImplemented\n"); 00264 return E_NOTIMPL; 00265 } 00266 00267 HRESULT 00268 STDMETHODCALLTYPE 00269 CTuningSpace::put_DefaultPreferredComponentTypes(IComponentTypes *NewComponentTypes) 00270 { 00271 OutputDebugStringW(L"CTuningSpace::put_DefaultPreferredComponentTypes : NotImplemented\n"); 00272 return E_NOTIMPL; 00273 } 00274 00275 HRESULT 00276 STDMETHODCALLTYPE 00277 CTuningSpace::get_FrequencyMapping(BSTR *pMapping) 00278 { 00279 OutputDebugStringW(L"CTuningSpace::get_FrequencyMapping : NotImplemented\n"); 00280 return E_NOTIMPL; 00281 } 00282 00283 HRESULT 00284 STDMETHODCALLTYPE 00285 CTuningSpace::put_FrequencyMapping(BSTR Mapping) 00286 { 00287 OutputDebugStringW(L"CTuningSpace::put_FrequencyMapping : NotImplemented\n"); 00288 return E_NOTIMPL; 00289 } 00290 00291 HRESULT 00292 STDMETHODCALLTYPE 00293 CTuningSpace::get_DefaultLocator(ILocator **LocatorVal) 00294 { 00295 OutputDebugStringW(L"CTuningSpace::get_DefaultLocator : NotImplemented\n"); 00296 return E_NOTIMPL; 00297 } 00298 00299 HRESULT 00300 STDMETHODCALLTYPE 00301 CTuningSpace::put_DefaultLocator(ILocator *LocatorVal) 00302 { 00303 OutputDebugStringW(L"CTuningSpace::put_DefaultLocator : NotImplemented\n"); 00304 return E_NOTIMPL; 00305 } 00306 00307 HRESULT 00308 STDMETHODCALLTYPE 00309 CTuningSpace::Clone(ITuningSpace **NewTS) 00310 { 00311 OutputDebugStringW(L"CTuningSpace::Clone : NotImplemented\n"); 00312 return E_NOTIMPL; 00313 } 00314 00315 //------------------------------------------------------------------- 00316 // IDVBTuningSpace 00317 // 00318 HRESULT 00319 STDMETHODCALLTYPE 00320 CTuningSpace::get_SystemType(DVBSystemType *SysType) 00321 { 00322 OutputDebugStringW(L"CTuningSpace::get_SystemType : NotImplemented\n"); 00323 return E_NOTIMPL; 00324 } 00325 00326 HRESULT 00327 STDMETHODCALLTYPE 00328 CTuningSpace::put_SystemType(DVBSystemType SysType) 00329 { 00330 OutputDebugStringW(L"CTuningSpace::put_SystemType : NotImplemented\n"); 00331 return E_NOTIMPL; 00332 } 00333 00334 HRESULT 00335 WINAPI 00336 CTuningSpace_fnConstructor( 00337 IUnknown *pUnknown, 00338 REFIID riid, 00339 LPVOID * ppv) 00340 { 00341 // construct device control 00342 CTuningSpace * space = new CTuningSpace(); 00343 00344 #ifdef MSVIDCTL_TRACE 00345 WCHAR Buffer[MAX_PATH]; 00346 LPOLESTR lpstr; 00347 StringFromCLSID(riid, &lpstr); 00348 swprintf(Buffer, L"CTuningSpace_fnConstructor riid %s pUnknown %p\n", lpstr, pUnknown); 00349 OutputDebugStringW(Buffer); 00350 #endif 00351 00352 if (!space) 00353 return E_OUTOFMEMORY; 00354 00355 if (FAILED(space->QueryInterface(riid, ppv))) 00356 { 00357 /* not supported */ 00358 delete space; 00359 return E_NOINTERFACE; 00360 } 00361 00362 return NOERROR; 00363 } 00364 00365 Generated on Sun May 27 2012 04:21:53 for ReactOS by
1.7.6.1
|