Something went wrong. Try again.
Reactos
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332/* * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS BDA Proxy * FILE: dll/directx/msvidctl/tunerequest.cpp * PURPOSE: ITuningRequest interface * * PROGRAMMERS: Johannes Anderwald (johannes.anderwald@reactos.org) */#include "precomp.h"
class CTuneRequest : public IDVBTuneRequest{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"CTuneRequest::Release : delete\n");
WCHAR Buffer[100]; swprintf(Buffer, L"CTuneRequest::Release : m_TuningSpace %p delete\n", m_TuningSpace); OutputDebugStringW(Buffer);
m_TuningSpace->Release(); //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);
//ITuneRequest methods HRESULT STDMETHODCALLTYPE get_TuningSpace(ITuningSpace **TuningSpace); HRESULT STDMETHODCALLTYPE get_Components(IComponents **Components); HRESULT STDMETHODCALLTYPE Clone(ITuneRequest **NewTuneRequest); HRESULT STDMETHODCALLTYPE get_Locator(ILocator **Locator); HRESULT STDMETHODCALLTYPE put_Locator(ILocator *Locator);
//IDVBTuneRequest methods HRESULT STDMETHODCALLTYPE get_ONID(long *ONID); HRESULT STDMETHODCALLTYPE put_ONID(long ONID); HRESULT STDMETHODCALLTYPE get_TSID(long *TSID); HRESULT STDMETHODCALLTYPE put_TSID(long TSID); HRESULT STDMETHODCALLTYPE get_SID(long *SID); HRESULT STDMETHODCALLTYPE put_SID(long SID);
CTuneRequest(ITuningSpace * TuningSpace) : m_Ref(0), m_ONID(-1), m_TSID(-1), m_SID(-1), m_Locator(0), m_TuningSpace(TuningSpace) { m_TuningSpace->AddRef(); };
CTuneRequest(ITuningSpace * TuningSpace, LONG ONID, LONG TSID, LONG SID, ILocator * Locator) : m_Ref(1), m_ONID(ONID), m_TSID(TSID), m_SID(SID), m_Locator(Locator), m_TuningSpace(TuningSpace) { if (m_Locator) m_Locator->AddRef();
m_TuningSpace->AddRef(); };
virtual ~CTuneRequest(){};
protected: LONG m_Ref; LONG m_ONID; LONG m_TSID; LONG m_SID; ILocator * m_Locator; ITuningSpace * m_TuningSpace;};
HRESULTSTDMETHODCALLTYPECTuneRequest::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_ITuneRequest)) { *Output = (ITuneRequest*)this; reinterpret_cast<ITuneRequest*>(*Output)->AddRef(); return NOERROR; }
if (IsEqualGUID(refiid, IID_IDVBTuneRequest)) { *Output = (IDVBTuneRequest*)this; reinterpret_cast<IDVBTuneRequest*>(*Output)->AddRef(); return NOERROR; }
WCHAR Buffer[MAX_PATH]; LPOLESTR lpstr; StringFromCLSID(refiid, &lpstr); swprintf(Buffer, L"CTuneRequest::QueryInterface: NoInterface for %s", lpstr); OutputDebugStringW(Buffer); CoTaskMemFree(lpstr);
return E_NOINTERFACE;}
//-------------------------------------------------------------------// IDispatch methods//HRESULTSTDMETHODCALLTYPECTuneRequest::GetTypeInfoCount(UINT *pctinfo){ OutputDebugStringW(L"CTuneRequest::GetTypeInfoCount : NotImplemented\n"); return E_NOTIMPL;}
HRESULTSTDMETHODCALLTYPECTuneRequest::GetTypeInfo(UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo){ OutputDebugStringW(L"CTuneRequest::GetTypeInfo : NotImplemented\n"); return E_NOTIMPL;}HRESULTSTDMETHODCALLTYPECTuneRequest::GetIDsOfNames(REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId){ OutputDebugStringW(L"CTuneRequest::GetIDsOfNames : NotImplemented\n"); return E_NOTIMPL;}HRESULTSTDMETHODCALLTYPECTuneRequest::Invoke(DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr){ OutputDebugStringW(L"CTuneRequest::Invoke : NotImplemented\n"); return E_NOTIMPL;}
//-------------------------------------------------------------------// ITuneRequest interface//
HRESULTSTDMETHODCALLTYPECTuneRequest::get_TuningSpace(ITuningSpace **TuningSpace){#ifdef MSVIDCTL_TRACE OutputDebugStringW(L"CTuneRequest::get_TuningSpace\n");#endif
*TuningSpace = m_TuningSpace; m_TuningSpace->AddRef();
return S_OK;}
HRESULTSTDMETHODCALLTYPECTuneRequest::get_Components(IComponents **Components){ OutputDebugStringW(L"CTuneRequest::get_Components : NotImplemented\n"); return E_NOTIMPL;}
HRESULTSTDMETHODCALLTYPECTuneRequest::Clone(ITuneRequest **NewTuneRequest){#ifdef MSVIDCTL_TRACE WCHAR Buffer[100]; swprintf(Buffer, L"CTuneRequest::Clone %p\n", NewTuneRequest); OutputDebugStringW(Buffer);#endif
*NewTuneRequest = new CTuneRequest(m_TuningSpace, m_ONID, m_TSID, m_SID, m_Locator);
if (!*NewTuneRequest) return E_OUTOFMEMORY;
return S_OK;}
HRESULTSTDMETHODCALLTYPECTuneRequest::get_Locator(ILocator **Locator){ OutputDebugStringW(L"CTuneRequest::get_Locator : NotImplemented\n"); return E_NOTIMPL;}
HRESULTSTDMETHODCALLTYPECTuneRequest::put_Locator(ILocator *Locator){ OutputDebugStringW(L"CTuneRequest::put_Locator : stub\n"); m_Locator = Locator;
return S_OK;}
//-------------------------------------------------------------------// IDVBTuneRequest interface//
HRESULTSTDMETHODCALLTYPECTuneRequest::get_ONID(long *ONID){#ifdef MSVIDCTL_TRACE OutputDebugStringW(L"CTuneRequest::get_ONID\n");#endif
*ONID = m_ONID; return S_OK;}
HRESULTSTDMETHODCALLTYPECTuneRequest::put_ONID(long ONID){#ifdef MSVIDCTL_TRACE WCHAR Buffer[100]; swprintf(Buffer, L"CTuneRequest::put_ONID : %lu\n", ONID); OutputDebugStringW(Buffer);#endif
m_ONID = ONID; return S_OK;}
HRESULTSTDMETHODCALLTYPECTuneRequest::get_TSID(long *TSID){#ifdef MSVIDCTL_TRACE OutputDebugStringW(L"CTuneRequest::get_TSID\n");#endif
*TSID = m_TSID; return S_OK;}
HRESULTSTDMETHODCALLTYPECTuneRequest::put_TSID(long TSID){#ifdef MSVIDCTL_TRACE WCHAR Buffer[100]; swprintf(Buffer, L"CTuneRequest::put_TSID : %lu\n", TSID); OutputDebugStringW(Buffer);#endif
m_TSID = TSID; return S_OK;}
HRESULTSTDMETHODCALLTYPECTuneRequest::get_SID(long *SID){#ifdef MSVIDCTL_TRACE OutputDebugStringW(L"CTuneRequest::get_SID\n");#endif
*SID = m_SID; return S_OK;}
HRESULTSTDMETHODCALLTYPECTuneRequest::put_SID(long SID){#ifdef MSVIDCTL_TRACE WCHAR Buffer[100]; swprintf(Buffer, L"CTuneRequest::put_SID : %lu\n", SID); OutputDebugStringW(Buffer);#endif
m_SID = SID; return S_OK;}
HRESULTWINAPICTuneRequest_fnConstructor( IUnknown *pUnknown, ITuningSpace * TuningSpace, REFIID riid, LPVOID * ppv){ // construct device control CTuneRequest * request = new CTuneRequest(TuningSpace);
#ifdef MSVIDCTL_TRACE WCHAR Buffer[MAX_PATH]; LPOLESTR lpstr; StringFromCLSID(riid, &lpstr); swprintf(Buffer, L"CTuneRequest_fnConstructor riid %s pUnknown %p\n", lpstr, pUnknown); OutputDebugStringW(Buffer);#endif
if (!request) return E_OUTOFMEMORY;
if (FAILED(request->QueryInterface(riid, ppv))) { /* not supported */ delete request; return E_NOINTERFACE; }
return NOERROR;}