Author: janderwald Date: Mon Mar 1 16:28:28 2010 New Revision: 45746
URL: http://svn.reactos.org/svn/reactos?rev=45746&view=rev Log: [BDAPLGIN] - Implement IBDA_PinControl::GetPinID, IBDA_PinControl::GetPinType - Comment out enumeration of IBDA_NetworkProvider [MSDVBNP] - Start implementing Network Provider for MPEG-2 based Networks [MSVIDCTL] - Start implementing ActiveX Control for Streaming Video
Added: trunk/reactos/dll/directx/msdvbnp/ (with props) trunk/reactos/dll/directx/msdvbnp/classfactory.cpp (with props) trunk/reactos/dll/directx/msdvbnp/msdvbnp.cpp (with props) trunk/reactos/dll/directx/msdvbnp/msdvbnp.rbuild (with props) trunk/reactos/dll/directx/msdvbnp/msdvbnp.rc (with props) trunk/reactos/dll/directx/msdvbnp/msdvbnp.spec (with props) trunk/reactos/dll/directx/msdvbnp/networkprovider.cpp (with props) trunk/reactos/dll/directx/msdvbnp/precomp.h (with props) trunk/reactos/dll/directx/msdvbnp/scanningtuner.cpp (with props) trunk/reactos/dll/directx/msvidctl/ (with props) trunk/reactos/dll/directx/msvidctl/classfactory.cpp (with props) trunk/reactos/dll/directx/msvidctl/enumtuningspaces.cpp (with props) trunk/reactos/dll/directx/msvidctl/msvidctl.cpp (with props) trunk/reactos/dll/directx/msvidctl/msvidctl.rbuild (with props) trunk/reactos/dll/directx/msvidctl/msvidctl.rc (with props) trunk/reactos/dll/directx/msvidctl/msvidctl.spec (with props) trunk/reactos/dll/directx/msvidctl/precomp.h (with props) trunk/reactos/dll/directx/msvidctl/tunerequest.cpp (with props) trunk/reactos/dll/directx/msvidctl/tuningspace.cpp (with props) trunk/reactos/dll/directx/msvidctl/tuningspace_container.cpp (with props) Modified: trunk/reactos/dll/directx/bdaplgin/devicecontrol.cpp trunk/reactos/dll/directx/bdaplgin/pincontrol.cpp trunk/reactos/dll/directx/bdaplgin/precomp.h
Modified: trunk/reactos/dll/directx/bdaplgin/devicecontrol.cpp URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/bdaplgin/device... ============================================================================== --- trunk/reactos/dll/directx/bdaplgin/devicecontrol.cpp [iso-8859-1] (original) +++ trunk/reactos/dll/directx/bdaplgin/devicecontrol.cpp [iso-8859-1] Mon Mar 1 16:28:28 2010 @@ -469,7 +469,7 @@
#ifdef BDAPLGIN_TRACE WCHAR Buffer[100]; - swprintf(Buffer, L"CBDADeviceControl::GetControlNode: hr %lx, BytesReturned %lu PinId %lu Dummy %lu\n", hr, BytesReturned, PinId, Dummy); + swprintf(Buffer, L"CBDADeviceControl::GetControlNode: hr %lx, BytesReturned %lu PinId %lu\n", hr, BytesReturned, PinId); OutputDebugStringW(Buffer); #endif
Modified: trunk/reactos/dll/directx/bdaplgin/pincontrol.cpp URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/bdaplgin/pincon... ============================================================================== --- trunk/reactos/dll/directx/bdaplgin/pincontrol.cpp [iso-8859-1] (original) +++ trunk/reactos/dll/directx/bdaplgin/pincontrol.cpp [iso-8859-1] Mon Mar 1 16:28:28 2010 @@ -9,7 +9,8 @@
#include "precomp.h"
-const GUID IID_IBDA_PinControl = {0x0DED49D5, 0xA8B7, 0x4d5d, {0x97, 0xA1, 0x12, 0xB0, 0xC1, 0x95, 0x87, 0x4D}}; +const GUID IID_IBDA_PinControl = {0x0DED49D5, 0xA8B7, 0x4d5d, {0x97, 0xA1, 0x12, 0xB0, 0xC1, 0x95, 0x87, 0x4D}}; +const GUID KSPROPSETID_BdaPinControl = {0x0ded49d5, 0xa8b7, 0x4d5d, {0x97, 0xa1, 0x12, 0xb0, 0xc1, 0x95, 0x87, 0x4d}}; const GUID IID_IPin = {0x56a86891, 0x0ad4, 0x11ce, {0xb0, 0x3a, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70}};
class CBDAPinControl : public IBDA_PinControl @@ -39,7 +40,11 @@
CBDAPinControl(HANDLE hFile, IBDA_NetworkProvider * pProvider, IPin * pConnectedPin) : m_Ref(0), m_Handle(hFile), m_pProvider(pProvider), m_pConnectedPin(pConnectedPin){}; - virtual ~CBDAPinControl(){}; + virtual ~CBDAPinControl() + { + //m_pConnectedPin->Release(); + //m_pProvider->Release(); + };
protected: LONG m_Ref; @@ -67,6 +72,16 @@ return NOERROR; }
+#ifdef BDAPLGIN_TRACE + WCHAR Buffer[MAX_PATH]; + LPOLESTR lpstr; + StringFromCLSID(refiid, &lpstr); + swprintf(Buffer, L"CBDAPinControl::QueryInterface: NoInterface for %s", lpstr); + DebugBreak(); + OutputDebugStringW(Buffer); + CoTaskMemFree(lpstr); +#endif + return E_NOINTERFACE; } //------------------------------------------------------------------- @@ -76,22 +91,50 @@ STDMETHODCALLTYPE CBDAPinControl::GetPinID(ULONG *pulPinID) { -#ifdef BDAPLGIN_TRACE - OutputDebugStringW(L"CBDAPinControl::GetPinID: NotImplemented\n"); -#endif - - return E_NOTIMPL; + KSPROPERTY Property; + ULONG BytesReturned; + HRESULT hr; + + // setup request + Property.Set = KSPROPSETID_BdaPinControl; + Property.Id = KSPROPERTY_BDA_PIN_ID; + Property.Flags = KSPROPERTY_TYPE_GET; + + // perform request + hr = KsSynchronousDeviceControl(m_Handle, IOCTL_KS_PROPERTY, (PVOID)&Property, sizeof(KSPROPERTY), pulPinID, sizeof(ULONG), &BytesReturned); + +#ifdef BDAPLGIN_TRACE + WCHAR Buffer[100]; + swprintf(Buffer, L"CBDAPinControl::GetPinID: hr %lx pulPinID %lu BytesReturned %lx\n", hr, *pulPinID, BytesReturned); + OutputDebugStringW(Buffer); +#endif + + return hr; }
HRESULT STDMETHODCALLTYPE CBDAPinControl::GetPinType(ULONG *pulPinType) { -#ifdef BDAPLGIN_TRACE - OutputDebugStringW(L"CBDAPinControl::GetPinType: NotImplemented\n"); -#endif - - return E_NOTIMPL; + KSPROPERTY Property; + ULONG BytesReturned; + HRESULT hr; + + // setup request + Property.Set = KSPROPSETID_BdaPinControl; + Property.Id = KSPROPERTY_BDA_PIN_TYPE; + Property.Flags = KSPROPERTY_TYPE_GET; + + // perform request + hr = KsSynchronousDeviceControl(m_Handle, IOCTL_KS_PROPERTY, (PVOID)&Property, sizeof(KSPROPERTY), pulPinType, sizeof(ULONG), &BytesReturned); + +#ifdef BDAPLGIN_TRACE + WCHAR Buffer[100]; + swprintf(Buffer, L"CBDAPinControl::GetPinType: hr %lx pulPinType %lu BytesReturned %lx\n", hr, *pulPinType, BytesReturned); + OutputDebugStringW(Buffer); +#endif + + return hr; }
HRESULT @@ -112,15 +155,29 @@ REFIID riid, LPVOID * ppv) { + IPin * pConnectedPin = NULL; + IBDA_NetworkProvider * pNetworkProvider = NULL; + HANDLE hFile = INVALID_HANDLE_VALUE; + +#if 0 + if (!IsEqualGUID(riid, IID_IUnknown)) + { +#ifdef BDAPLGIN_TRACE + OutputDebugStringW(L"CBDAPinControl_fnConstructor: Expected IUnknown\n"); +#endif + return REGDB_E_CLASSNOTREG; + } + + HRESULT hr; IKsObject * pObject = NULL; - IPin * pPin = NULL, * pConnectedPin = NULL; + IPin * pPin = NULL; IEnumFilters *pEnumFilters = NULL; - IBDA_NetworkProvider * pNetworkProvider = NULL; + IBaseFilter * ppFilter[1]; PIN_INFO PinInfo; FILTER_INFO FilterInfo; - HANDLE hFile = INVALID_HANDLE_VALUE; +
if (!pUnkOuter) return E_POINTER; @@ -225,6 +282,7 @@ // no network provider interface in graph return E_NOINTERFACE; } +#endif
CBDAPinControl * handler = new CBDAPinControl(hFile, pNetworkProvider, pConnectedPin);
Modified: trunk/reactos/dll/directx/bdaplgin/precomp.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/bdaplgin/precom... ============================================================================== --- trunk/reactos/dll/directx/bdaplgin/precomp.h [iso-8859-1] (original) +++ trunk/reactos/dll/directx/bdaplgin/precomp.h [iso-8859-1] Mon Mar 1 16:28:28 2010 @@ -1,6 +1,7 @@ #ifndef PRECOMP_H__ #define PRECOMP_H__
+#define BDAPLGIN_TRACE #define BUILDING_KS #define _KSDDK_ #include <dshow.h>
Propchange: trunk/reactos/dll/directx/msdvbnp/ ------------------------------------------------------------------------------ --- bugtraq:logregex (added) +++ bugtraq:logregex Mon Mar 1 16:28:28 2010 @@ -1,0 +1,2 @@ +([Ii]ssue|[Bb]ug)s? #?(\d+)(,? ?#?(\d+))*(,? ?(and |or )?#?(\d+))? +(\d+)
Propchange: trunk/reactos/dll/directx/msdvbnp/ ------------------------------------------------------------------------------ bugtraq:message = See issue #%BUGID% for more details.
Propchange: trunk/reactos/dll/directx/msdvbnp/ ------------------------------------------------------------------------------ bugtraq:url = http://www.reactos.org/bugzilla/show_bug.cgi?id=%BUGID%
Propchange: trunk/reactos/dll/directx/msdvbnp/ ------------------------------------------------------------------------------ tsvn:logminsize = 10
Added: trunk/reactos/dll/directx/msdvbnp/classfactory.cpp URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/msdvbnp/classfa... ============================================================================== --- trunk/reactos/dll/directx/msdvbnp/classfactory.cpp (added) +++ trunk/reactos/dll/directx/msdvbnp/classfactory.cpp [iso-8859-1] Mon Mar 1 16:28:28 2010 @@ -1,0 +1,105 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS BDA Proxy + * FILE: dll/directx/msdvbnp/classfactory.cpp + * PURPOSE: IClassFactory interface + * + * PROGRAMMERS: Johannes Anderwald (janderwald@reactos.org) + */ +#include "precomp.h" + +const GUID IID_IUnknown = {0x00000000, 0x0000, 0x0000, {0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46}}; +const GUID IID_IClassFactory = {0x00000001, 0x0000, 0x0000, {0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46}}; + +class CClassFactory : public IClassFactory +{ +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) + { + delete this; + return 0; + } + return m_Ref; + } + + HRESULT WINAPI CreateInstance(LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObject); + HRESULT WINAPI LockServer(BOOL fLock); + + CClassFactory(LPFNCREATEINSTANCE lpfnCI, PLONG pcRefDll, IID *riidInst) : m_Ref(1), m_lpfnCI(lpfnCI), m_IID(riidInst) + {}; + + virtual ~CClassFactory(){}; + +protected: + LONG m_Ref; + LPFNCREATEINSTANCE m_lpfnCI; + IID * m_IID; +}; + +HRESULT +WINAPI +CClassFactory::QueryInterface( + REFIID riid, + LPVOID *ppvObj) +{ + *ppvObj = NULL; + if(IsEqualIID(riid, IID_IUnknown) || IsEqualIID(riid, IID_IClassFactory)) + { + *ppvObj = PVOID(this); + InterlockedIncrement(&m_Ref); + return S_OK; + } + return E_NOINTERFACE; +} + +HRESULT +WINAPI +CClassFactory::CreateInstance( + LPUNKNOWN pUnkOuter, + REFIID riid, + LPVOID *ppvObject) +{ + *ppvObject = NULL; + + if ( m_IID == NULL || IsEqualCLSID(riid, *m_IID) || IsEqualCLSID(riid, IID_IUnknown)) + { + return m_lpfnCI(pUnkOuter, riid, ppvObject); + } + + return E_NOINTERFACE; +} + +HRESULT +WINAPI +CClassFactory::LockServer( + BOOL fLock) +{ + return E_NOTIMPL; +} + +IClassFactory * +CClassFactory_fnConstructor( + LPFNCREATEINSTANCE lpfnCI, + PLONG pcRefDll, + IID * riidInst) +{ + CClassFactory* factory = new CClassFactory(lpfnCI, pcRefDll, riidInst); + + if (!factory) + return NULL; + + if (pcRefDll) + InterlockedIncrement(pcRefDll); + + return (LPCLASSFACTORY)factory; +}
Propchange: trunk/reactos/dll/directx/msdvbnp/classfactory.cpp ------------------------------------------------------------------------------ svn:eol-style = native
Added: trunk/reactos/dll/directx/msdvbnp/msdvbnp.cpp URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/msdvbnp/msdvbnp... ============================================================================== --- trunk/reactos/dll/directx/msdvbnp/msdvbnp.cpp (added) +++ trunk/reactos/dll/directx/msdvbnp/msdvbnp.cpp [iso-8859-1] Mon Mar 1 16:28:28 2010 @@ -1,0 +1,108 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS Network Provider for MPEG2 based networks + * FILE: dll/directx/msdvbnp/msdvbnp.cpp + * PURPOSE: COM Initialization + * + * PROGRAMMERS: Johannes Anderwald (janderwald@reactos.org) + */ + +#include "precomp.h" + +const GUID CLSID_DVBTNetworkProvider = {0x216c62df, 0x6d7f, 0x4e9a, {0x85, 0x71, 0x5, 0xf1, 0x4e, 0xdb, 0x76, 0x6a}}; + +static INTERFACE_TABLE InterfaceTable[] = +{ + {&CLSID_DVBTNetworkProvider, CNetworkProvider_fnConstructor}, + {NULL, NULL} +}; + +extern "C" +BOOL +WINAPI +DllMain( + HINSTANCE hInstDLL, + DWORD fdwReason, + LPVOID lpvReserved) +{ + switch (fdwReason) + { + case DLL_PROCESS_ATTACH: + CoInitialize(NULL); + +#ifdef MSDVBNP_TRACE + OutputDebugStringW(L"MSDVBNP::DllMain()\n"); +#endif + + DisableThreadLibraryCalls(hInstDLL); + break; + default: + break; + } + + return TRUE; +} + + +extern "C" +KSDDKAPI +HRESULT +WINAPI +DllUnregisterServer(void) +{ + return S_OK; +} + +extern "C" +KSDDKAPI +HRESULT +WINAPI +DllRegisterServer(void) +{ + return S_OK; +} + +KSDDKAPI +HRESULT +WINAPI +DllGetClassObject( + REFCLSID rclsid, + REFIID riid, + LPVOID *ppv) +{ + UINT i; + HRESULT hres = E_OUTOFMEMORY; + IClassFactory * pcf = NULL; + + if (!ppv) + return E_INVALIDARG; + + *ppv = NULL; + + for (i = 0; InterfaceTable[i].riid; i++) + { + if (IsEqualIID(*InterfaceTable[i].riid, rclsid)) + { + pcf = CClassFactory_fnConstructor(InterfaceTable[i].lpfnCI, NULL, NULL); + break; + } + } + + if (!pcf) + { + return CLASS_E_CLASSNOTAVAILABLE; + } + + hres = pcf->QueryInterface(riid, ppv); + pcf->Release(); + + return hres; +} + +KSDDKAPI +HRESULT +WINAPI +DllCanUnloadNow(void) +{ + return S_OK; +}
Propchange: trunk/reactos/dll/directx/msdvbnp/msdvbnp.cpp ------------------------------------------------------------------------------ svn:eol-style = native
Added: trunk/reactos/dll/directx/msdvbnp/msdvbnp.rbuild URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/msdvbnp/msdvbnp... ============================================================================== --- trunk/reactos/dll/directx/msdvbnp/msdvbnp.rbuild (added) +++ trunk/reactos/dll/directx/msdvbnp/msdvbnp.rbuild [iso-8859-1] Mon Mar 1 16:28:28 2010 @@ -1,0 +1,28 @@ +<?xml version="1.0"?> +<!DOCTYPE module SYSTEM "../../../tools/rbuild/project.dtd"> +<group> +<module name="msdvbnp" type="win32dll" baseaddress="${BASEADDRESS_MSDVBNP}" installbase="system32" installname="msdvbnp.ax"> + <importlibrary definition="msdvbnp.spec" /> + <include base="msdvbnp">.</include> + <library>ntdll</library> + <library>kernel32</library> + <library>advapi32</library> + <library>ole32</library> + <library>advapi32</library> + <library>msvcrt</library> + <library>strmiids</library> + <group compilerset="gcc"> + <compilerflag compiler="cxx">-fno-exceptions</compilerflag> + <compilerflag compiler="cxx">-fno-rtti</compilerflag> + </group> + <group compilerset="msc"> + <compilerflag compiler="cxx">/GR-</compilerflag> + </group> + + <file>classfactory.cpp</file> + <file>msdvbnp.cpp</file> + <file>msdvbnp.rc</file> + <file>networkprovider.cpp</file> + <file>scanningtuner.cpp</file> +</module> +</group>
Propchange: trunk/reactos/dll/directx/msdvbnp/msdvbnp.rbuild ------------------------------------------------------------------------------ svn:eol-style = native
Added: trunk/reactos/dll/directx/msdvbnp/msdvbnp.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/msdvbnp/msdvbnp... ============================================================================== --- trunk/reactos/dll/directx/msdvbnp/msdvbnp.rc (added) +++ trunk/reactos/dll/directx/msdvbnp/msdvbnp.rc [iso-8859-1] Mon Mar 1 16:28:28 2010 @@ -1,0 +1,12 @@ +#include <windows.h> + +LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL + +#define REACTOS_VERSION_DLL +#define REACTOS_STR_FILE_DESCRIPTION "ReactOS Network Provider for MPEG2 based networks\0" +#define REACTOS_STR_INTERNAL_NAME "MSDvBNP.ax\0" +#define REACTOS_STR_ORIGINAL_FILENAME "MSDvBNP.ax\0" +#define REACTOS_STR_PRODUCT_VERSION "6.5.2600.3264\0" +#define REACTOS_STR_FILE_VERSION "6.5.2600.3264\0" + +#include <reactos/version.rc>
Propchange: trunk/reactos/dll/directx/msdvbnp/msdvbnp.rc ------------------------------------------------------------------------------ svn:eol-style = native
Added: trunk/reactos/dll/directx/msdvbnp/msdvbnp.spec URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/msdvbnp/msdvbnp... ============================================================================== --- trunk/reactos/dll/directx/msdvbnp/msdvbnp.spec (added) +++ trunk/reactos/dll/directx/msdvbnp/msdvbnp.spec [iso-8859-1] Mon Mar 1 16:28:28 2010 @@ -1,0 +1,4 @@ +@ stdcall DllCanUnloadNow() +@ stdcall DllGetClassObject(ptr ptr ptr) +@ stdcall DllRegisterServer() +@ stdcall DllUnregisterServer()
Propchange: trunk/reactos/dll/directx/msdvbnp/msdvbnp.spec ------------------------------------------------------------------------------ svn:eol-style = native
Added: trunk/reactos/dll/directx/msdvbnp/networkprovider.cpp URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/msdvbnp/network... ============================================================================== --- trunk/reactos/dll/directx/msdvbnp/networkprovider.cpp (added) +++ trunk/reactos/dll/directx/msdvbnp/networkprovider.cpp [iso-8859-1] Mon Mar 1 16:28:28 2010 @@ -1,0 +1,350 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS Network Provider for MPEG2 based networks + * FILE: dll/directx/msdvbnp/networkprovider.cpp + * PURPOSE: IBDA_NetworkProvider interface + * + * PROGRAMMERS: Johannes Anderwald (janderwald@reactos.org) + */ +#include "precomp.h" + +class CNetworkProvider : public IBaseFilter, + public IAMovieSetup, + public IBDA_NetworkProvider +{ +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) + { + delete this; + return 0; + } + return m_Ref; + } + + // IBaseFilter methods + HRESULT STDMETHODCALLTYPE GetClassID(CLSID *pClassID); + HRESULT STDMETHODCALLTYPE Stop( void); + HRESULT STDMETHODCALLTYPE Pause( void); + HRESULT STDMETHODCALLTYPE Run(REFERENCE_TIME tStart); + HRESULT STDMETHODCALLTYPE GetState(DWORD dwMilliSecsTimeout, FILTER_STATE *State); + HRESULT STDMETHODCALLTYPE SetSyncSource(IReferenceClock *pClock); + HRESULT STDMETHODCALLTYPE GetSyncSource(IReferenceClock **pClock); + HRESULT STDMETHODCALLTYPE EnumPins(IEnumPins **ppEnum); + HRESULT STDMETHODCALLTYPE FindPin(LPCWSTR Id, IPin **ppPin); + HRESULT STDMETHODCALLTYPE QueryFilterInfo(FILTER_INFO *pInfo); + HRESULT STDMETHODCALLTYPE JoinFilterGraph(IFilterGraph *pGraph, LPCWSTR pName); + HRESULT STDMETHODCALLTYPE QueryVendorInfo(LPWSTR *pVendorInfo); + + //IAMovieSetup methods + HRESULT STDMETHODCALLTYPE Register( void); + HRESULT STDMETHODCALLTYPE Unregister( void); + + //IBDA_NetworkProvider methods + HRESULT STDMETHODCALLTYPE PutSignalSource(ULONG ulSignalSource); + HRESULT STDMETHODCALLTYPE GetSignalSource(ULONG *pulSignalSource); + HRESULT STDMETHODCALLTYPE GetNetworkType(GUID *pguidNetworkType); + HRESULT STDMETHODCALLTYPE PutTuningSpace(REFGUID guidTuningSpace); + HRESULT STDMETHODCALLTYPE GetTuningSpace(GUID *pguidTuingSpace); + HRESULT STDMETHODCALLTYPE RegisterDeviceFilter(IUnknown *pUnkFilterControl, ULONG *ppvRegisitrationContext); + HRESULT STDMETHODCALLTYPE UnRegisterDeviceFilter(ULONG pvRegistrationContext); + + CNetworkProvider() : m_Ref(0), m_pGraph(0){}; + virtual ~CNetworkProvider(){}; + +protected: + LONG m_Ref; + IFilterGraph *m_pGraph; +}; + +HRESULT +STDMETHODCALLTYPE +CNetworkProvider::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_IBaseFilter)) + { + *Output = (IBaseFilter*)(this); + reinterpret_cast<IBaseFilter*>(*Output)->AddRef(); + return NOERROR; + } + + if (IsEqualGUID(refiid, IID_ITuner) || + IsEqualGUID(refiid, IID_IScanningTuner)) + { + // construct scanning tuner + return CScanningTunner_fnConstructor(NULL, refiid, Output); + } + + + + WCHAR Buffer[MAX_PATH]; + LPOLESTR lpstr; + StringFromCLSID(refiid, &lpstr); + swprintf(Buffer, L"CNetworkProvider::QueryInterface: NoInterface for %s", lpstr); + DebugBreak(); + OutputDebugStringW(Buffer); + CoTaskMemFree(lpstr); + + + return E_NOINTERFACE; +} + +//------------------------------------------------------------------- +// IBaseFilter interface +// + +HRESULT +STDMETHODCALLTYPE +CNetworkProvider::GetClassID( + CLSID *pClassID) +{ + OutputDebugStringW(L"CNetworkProvider::GetClassID : NotImplemented\n"); + return E_NOTIMPL; +} + +HRESULT +STDMETHODCALLTYPE +CNetworkProvider::Stop() +{ + OutputDebugStringW(L"CNetworkProvider::Stop : NotImplemented\n"); + return E_NOTIMPL; +} + +HRESULT +STDMETHODCALLTYPE +CNetworkProvider::Pause() +{ + OutputDebugStringW(L"CNetworkProvider::Pause : NotImplemented\n"); + return E_NOTIMPL; +} + +HRESULT +STDMETHODCALLTYPE +CNetworkProvider::Run( + REFERENCE_TIME tStart) +{ + OutputDebugStringW(L"CNetworkProvider::Run : NotImplemented\n"); + return E_NOTIMPL; +} + +HRESULT +STDMETHODCALLTYPE +CNetworkProvider::GetState( + DWORD dwMilliSecsTimeout, + FILTER_STATE *State) +{ + OutputDebugStringW(L"CNetworkProvider::GetState : NotImplemented\n"); + return E_NOTIMPL; +} + +HRESULT +STDMETHODCALLTYPE +CNetworkProvider::SetSyncSource( + IReferenceClock *pClock) +{ + OutputDebugStringW(L"CNetworkProvider::SetSyncSource : NotImplemented\n"); + return E_NOTIMPL; +} + +HRESULT +STDMETHODCALLTYPE +CNetworkProvider::GetSyncSource( + IReferenceClock **pClock) +{ + OutputDebugStringW(L"CNetworkProvider::GetSyncSource : NotImplemented\n"); + return E_NOTIMPL; +} + +HRESULT +STDMETHODCALLTYPE +CNetworkProvider::EnumPins( + IEnumPins **ppEnum) +{ + OutputDebugStringW(L"CNetworkProvider::EnumPins : NotImplemented\n"); + return E_NOTIMPL; +} + +HRESULT +STDMETHODCALLTYPE +CNetworkProvider::FindPin( + LPCWSTR Id, IPin **ppPin) +{ + OutputDebugStringW(L"CNetworkProvider::FindPin : NotImplemented\n"); + return E_NOTIMPL; +} + + +HRESULT +STDMETHODCALLTYPE +CNetworkProvider::QueryFilterInfo( + FILTER_INFO *pInfo) +{ + OutputDebugStringW(L"CNetworkProvider::QueryFilterInfo : NotImplemented\n"); + return E_NOTIMPL; +} + +HRESULT +STDMETHODCALLTYPE +CNetworkProvider::JoinFilterGraph( + IFilterGraph *pGraph, + LPCWSTR pName) +{ + if (pGraph) + { + // joining filter graph + m_pGraph = pGraph; + } + else + { + // leaving graph + m_pGraph = 0; + } + + OutputDebugStringW(L"CNetworkProvider::JoinFilterGraph\n"); + return S_OK; +} + + +HRESULT +STDMETHODCALLTYPE +CNetworkProvider::QueryVendorInfo( + LPWSTR *pVendorInfo) +{ + OutputDebugStringW(L"CNetworkProvider::QueryVendorInfo : NotImplemented\n"); + return E_NOTIMPL; +} + +//------------------------------------------------------------------- +// IAMovieSetup interface +// + +HRESULT +STDMETHODCALLTYPE +CNetworkProvider::Register() +{ + OutputDebugStringW(L"CNetworkProvider::Register : NotImplemented\n"); + return E_NOTIMPL; +} + +HRESULT +STDMETHODCALLTYPE +CNetworkProvider::Unregister() +{ + OutputDebugStringW(L"CNetworkProvider::Unregister : NotImplemented\n"); + return E_NOTIMPL; +} + +//------------------------------------------------------------------- +// IBDA_NetworkProvider interface +// + +HRESULT +STDMETHODCALLTYPE +CNetworkProvider::PutSignalSource( + ULONG ulSignalSource) +{ + OutputDebugStringW(L"CNetworkProvider::PutSignalSource : NotImplemented\n"); + return E_NOTIMPL; +} + +HRESULT +STDMETHODCALLTYPE +CNetworkProvider::GetSignalSource( + ULONG *pulSignalSource) +{ + OutputDebugStringW(L"CNetworkProvider::GetSignalSource : NotImplemented\n"); + return E_NOTIMPL; +} + +HRESULT +STDMETHODCALLTYPE +CNetworkProvider::GetNetworkType( + GUID *pguidNetworkType) +{ + OutputDebugStringW(L"CNetworkProvider::GetNetworkType : NotImplemented\n"); + return E_NOTIMPL; +} + +HRESULT +STDMETHODCALLTYPE +CNetworkProvider::PutTuningSpace( + REFGUID guidTuningSpace) +{ + OutputDebugStringW(L"CNetworkProvider::PutTuningSpace : NotImplemented\n"); + return E_NOTIMPL; +} + +HRESULT +STDMETHODCALLTYPE +CNetworkProvider::GetTuningSpace( + GUID *pguidTuingSpace) +{ + OutputDebugStringW(L"CNetworkProvider::GetTuningSpace : NotImplemented\n"); + return E_NOTIMPL; +} + +HRESULT +STDMETHODCALLTYPE +CNetworkProvider::RegisterDeviceFilter( + IUnknown *pUnkFilterControl, + ULONG *ppvRegisitrationContext) +{ + OutputDebugStringW(L"CNetworkProvider::RegisterDeviceFilter : NotImplemented\n"); + return E_NOTIMPL; +} + +HRESULT +STDMETHODCALLTYPE +CNetworkProvider::UnRegisterDeviceFilter(ULONG pvRegistrationContext) +{ + OutputDebugStringW(L"CNetworkProvider::UnRegisterDeviceFilter : NotImplemented\n"); + return E_NOTIMPL; +} + +HRESULT +WINAPI +CNetworkProvider_fnConstructor( + IUnknown *pUnknown, + REFIID riid, + LPVOID * ppv) +{ + // construct device control + CNetworkProvider * handler = new CNetworkProvider(); + +#ifdef MSDVBNP_TRACE + WCHAR Buffer[MAX_PATH]; + LPOLESTR lpstr; + StringFromCLSID(riid, &lpstr); + swprintf(Buffer, L"CNetworkProvider_fnConstructor riid %s pUnknown %p", lpstr, pUnknown); + OutputDebugStringW(Buffer); +#endif + + if (!handler) + return E_OUTOFMEMORY; + + if (FAILED(handler->QueryInterface(riid, ppv))) + { + /* not supported */ + delete handler; + return E_NOINTERFACE; + } + OutputDebugStringW(L"CNetworkProvider_fnConstructor Success"); + return NOERROR; +}
Propchange: trunk/reactos/dll/directx/msdvbnp/networkprovider.cpp ------------------------------------------------------------------------------ svn:eol-style = native
Added: trunk/reactos/dll/directx/msdvbnp/precomp.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/msdvbnp/precomp... ============================================================================== --- trunk/reactos/dll/directx/msdvbnp/precomp.h (added) +++ trunk/reactos/dll/directx/msdvbnp/precomp.h [iso-8859-1] Mon Mar 1 16:28:28 2010 @@ -1,0 +1,54 @@ +#ifndef PRECOMP_H__ +#define PRECOMP_H__ + +#define MSDVBNP_TRACE +#define BUILDING_KS +#define _KSDDK_ +#include <dshow.h> +//#include <streams.h> +#include <ks.h> +#define __STREAMS__ +#include <ksproxy.h> +#include <stdio.h> +#include <wchar.h> +#include <tchar.h> +#include <uuids.h> +#include <bdatypes.h> +#include <bdaiface.h> +#include <bdamedia.h> +#include <tuner.h> +#include <assert.h> + +typedef HRESULT (CALLBACK *LPFNCREATEINSTANCE)(IUnknown* pUnkOuter, REFIID riid, LPVOID* ppvObject); + +typedef struct +{ + const GUID* riid; + LPFNCREATEINSTANCE lpfnCI; +} INTERFACE_TABLE; + +/* classfactory.cpp */ +IClassFactory * +CClassFactory_fnConstructor( + LPFNCREATEINSTANCE lpfnCI, + PLONG pcRefDll, + IID * riidInst); + +/* networkprovider.cpp */ +HRESULT +WINAPI +CNetworkProvider_fnConstructor( + IUnknown *pUnknown, + REFIID riid, + LPVOID * ppv); + +/* scanningtunner.cpp */ +HRESULT +WINAPI +CScanningTunner_fnConstructor( + IUnknown *pUnknown, + REFIID riid, + LPVOID * ppv); + + +#endif
Propchange: trunk/reactos/dll/directx/msdvbnp/precomp.h ------------------------------------------------------------------------------ svn:eol-style = native
Added: trunk/reactos/dll/directx/msdvbnp/scanningtuner.cpp URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/msdvbnp/scannin... ============================================================================== --- trunk/reactos/dll/directx/msdvbnp/scanningtuner.cpp (added) +++ trunk/reactos/dll/directx/msdvbnp/scanningtuner.cpp [iso-8859-1] Mon Mar 1 16:28:28 2010 @@ -1,0 +1,265 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS Network Provider for MPEG2 based networks + * FILE: dll/directx/msdvbnp/networkprovider.cpp + * PURPOSE: IScanningTunner interface + * + * PROGRAMMERS: Johannes Anderwald (janderwald@reactos.org) + */ +#include "precomp.h" + +class CScanningTunner : public IScanningTuner +{ +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) + { + delete this; + return 0; + } + return m_Ref; + } + + //ITuner methods + HRESULT STDMETHODCALLTYPE get_TuningSpace(ITuningSpace **TuningSpace); + HRESULT STDMETHODCALLTYPE put_TuningSpace(ITuningSpace *TuningSpace); + HRESULT STDMETHODCALLTYPE EnumTuningSpaces(IEnumTuningSpaces **ppEnum); + HRESULT STDMETHODCALLTYPE get_TuneRequest(ITuneRequest **TuneRequest); + HRESULT STDMETHODCALLTYPE put_TuneRequest(ITuneRequest *TuneRequest); + HRESULT STDMETHODCALLTYPE Validate(ITuneRequest *TuneRequest); + HRESULT STDMETHODCALLTYPE get_PreferredComponentTypes(IComponentTypes **ComponentTypes); + HRESULT STDMETHODCALLTYPE put_PreferredComponentTypes(IComponentTypes *ComponentTypes); + HRESULT STDMETHODCALLTYPE get_SignalStrength(long *Strength); + HRESULT STDMETHODCALLTYPE TriggerSignalEvents(long Interval); + + //IScanningTuner methods + HRESULT STDMETHODCALLTYPE SeekUp(); + HRESULT STDMETHODCALLTYPE SeekDown(); + HRESULT STDMETHODCALLTYPE ScanUp(long MillisecondsPause); + HRESULT STDMETHODCALLTYPE ScanDown(long MillisecondsPause); + HRESULT STDMETHODCALLTYPE AutoProgram(); + + CScanningTunner() : m_Ref(0), m_TuningSpace(0){}; + virtual ~CScanningTunner(){}; + +protected: + LONG m_Ref; + ITuningSpace * m_TuningSpace; +}; + +HRESULT +STDMETHODCALLTYPE +CScanningTunner::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_ITuner)) + { + *Output = (ITuner*)(this); + reinterpret_cast<ITuner*>(*Output)->AddRef(); + return NOERROR; + } + + if (IsEqualGUID(refiid, IID_IScanningTuner)) + { + *Output = (IScanningTuner*)(this); + reinterpret_cast<IScanningTuner*>(*Output)->AddRef(); + return NOERROR; + } + + WCHAR Buffer[MAX_PATH]; + LPOLESTR lpstr; + StringFromCLSID(refiid, &lpstr); + swprintf(Buffer, L"CScanningTunner::QueryInterface: NoInterface for %s\n", lpstr); + OutputDebugStringW(Buffer); + CoTaskMemFree(lpstr); + + + return E_NOINTERFACE; +} + +//------------------------------------------------------------------- +//ITuner +// +HRESULT +STDMETHODCALLTYPE +CScanningTunner::get_TuningSpace( + ITuningSpace **TuningSpace) +{ + OutputDebugStringW(L"CScanningTunner::get_TuningSpace\n"); + + *TuningSpace = m_TuningSpace; + return S_OK; +} + +HRESULT +STDMETHODCALLTYPE +CScanningTunner::put_TuningSpace( + ITuningSpace *TuningSpace) +{ + OutputDebugStringW(L"CScanningTunner::put_TuningSpace\n"); + m_TuningSpace = TuningSpace; + return S_OK; +} + +HRESULT +STDMETHODCALLTYPE +CScanningTunner::EnumTuningSpaces( + IEnumTuningSpaces **ppEnum) +{ + OutputDebugStringW(L"CScanningTunner::EnumTuningSpaces : NotImplemented\n"); + return E_NOTIMPL; +} + +HRESULT +STDMETHODCALLTYPE +CScanningTunner::get_TuneRequest( + ITuneRequest **TuneRequest) +{ + OutputDebugStringW(L"CScanningTunner::get_TuneRequest : NotImplemented\n"); + return E_NOTIMPL; +} + +HRESULT +STDMETHODCALLTYPE +CScanningTunner::put_TuneRequest( + ITuneRequest *TuneRequest) +{ + OutputDebugStringW(L"CScanningTunner::put_TuneRequest : NotImplemented\n"); + return E_NOTIMPL; +} + +HRESULT +STDMETHODCALLTYPE +CScanningTunner::Validate( + ITuneRequest *TuneRequest) +{ + OutputDebugStringW(L"CScanningTunner::Validate : NotImplemented\n"); + return E_NOTIMPL; +} + +HRESULT +STDMETHODCALLTYPE +CScanningTunner::get_PreferredComponentTypes( + IComponentTypes **ComponentTypes) +{ + OutputDebugStringW(L"CScanningTunner::get_PreferredComponentTypes : NotImplemented\n"); + return E_NOTIMPL; +} + +HRESULT +STDMETHODCALLTYPE +CScanningTunner::put_PreferredComponentTypes( + IComponentTypes *ComponentTypes) +{ + OutputDebugStringW(L"CScanningTunner::put_PreferredComponentTypes : NotImplemented\n"); + return E_NOTIMPL; +} + +HRESULT +STDMETHODCALLTYPE +CScanningTunner::get_SignalStrength( + long *Strength) +{ + OutputDebugStringW(L"CScanningTunner::get_SignalStrength : NotImplemented\n"); + return E_NOTIMPL; +} + +HRESULT +STDMETHODCALLTYPE +CScanningTunner::TriggerSignalEvents( + long Interval) +{ + OutputDebugStringW(L"CScanningTunner::TriggerSignalEvents : NotImplemented\n"); + return E_NOTIMPL; +} + +//------------------------------------------------------------------- +//IScanningTuner +HRESULT +STDMETHODCALLTYPE +CScanningTunner::SeekUp() +{ + OutputDebugStringW(L"CScanningTunner::SeekUp : NotImplemented\n"); + return E_NOTIMPL; +} + +HRESULT +STDMETHODCALLTYPE +CScanningTunner::SeekDown() +{ + OutputDebugStringW(L"CScanningTunner::SeekDown : NotImplemented\n"); + return E_NOTIMPL; +} + +HRESULT +STDMETHODCALLTYPE +CScanningTunner::ScanUp( + long MillisecondsPause) +{ + OutputDebugStringW(L"CScanningTunner::ScanUp : NotImplemented\n"); + return E_NOTIMPL; +} + +HRESULT +STDMETHODCALLTYPE +CScanningTunner::ScanDown( + long MillisecondsPause) +{ + OutputDebugStringW(L"CScanningTunner::ScanDown : NotImplemented\n"); + return E_NOTIMPL; +} + +HRESULT +STDMETHODCALLTYPE +CScanningTunner::AutoProgram() +{ + OutputDebugStringW(L"CScanningTunner::AutoProgram : NotImplemented\n"); + return E_NOTIMPL; +} + +HRESULT +WINAPI +CScanningTunner_fnConstructor( + IUnknown *pUnknown, + REFIID riid, + LPVOID * ppv) +{ + // construct device control + CScanningTunner * handler = new CScanningTunner(); + +#ifdef MSDVBNP_TRACE + WCHAR Buffer[MAX_PATH]; + LPOLESTR lpstr; + StringFromCLSID(riid, &lpstr); + swprintf(Buffer, L"CScanningTunner_fnConstructor riid %s pUnknown %p\n", lpstr, pUnknown); + OutputDebugStringW(Buffer); +#endif + + if (!handler) + return E_OUTOFMEMORY; + + if (FAILED(handler->QueryInterface(riid, ppv))) + { + /* not supported */ + delete handler; + return E_NOINTERFACE; + } + + return NOERROR; +}
Propchange: trunk/reactos/dll/directx/msdvbnp/scanningtuner.cpp ------------------------------------------------------------------------------ svn:eol-style = native
Propchange: trunk/reactos/dll/directx/msvidctl/ ------------------------------------------------------------------------------ --- bugtraq:logregex (added) +++ bugtraq:logregex Mon Mar 1 16:28:28 2010 @@ -1,0 +1,2 @@ +([Ii]ssue|[Bb]ug)s? #?(\d+)(,? ?#?(\d+))*(,? ?(and |or )?#?(\d+))? +(\d+)
Propchange: trunk/reactos/dll/directx/msvidctl/ ------------------------------------------------------------------------------ bugtraq:message = See issue #%BUGID% for more details.
Propchange: trunk/reactos/dll/directx/msvidctl/ ------------------------------------------------------------------------------ bugtraq:url = http://www.reactos.org/bugzilla/show_bug.cgi?id=%BUGID%
Propchange: trunk/reactos/dll/directx/msvidctl/ ------------------------------------------------------------------------------ tsvn:logminsize = 10
Added: trunk/reactos/dll/directx/msvidctl/classfactory.cpp URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/msvidctl/classf... ============================================================================== --- trunk/reactos/dll/directx/msvidctl/classfactory.cpp (added) +++ trunk/reactos/dll/directx/msvidctl/classfactory.cpp [iso-8859-1] Mon Mar 1 16:28:28 2010 @@ -1,0 +1,106 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS BDA Proxy + * FILE: dll/directx/msvidctl/classfactory.cpp + * PURPOSE: ClassFactory interface + * + * PROGRAMMERS: Johannes Anderwald (janderwald@reactos.org) + */ +#include "precomp.h" + +const GUID IID_IUnknown = {0x00000000, 0x0000, 0x0000, {0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46}}; +const GUID IID_IClassFactory = {0x00000001, 0x0000, 0x0000, {0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46}}; + +class CClassFactory : public IClassFactory +{ +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) + { + delete this; + return 0; + } + return m_Ref; + } + + HRESULT WINAPI CreateInstance(LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObject); + HRESULT WINAPI LockServer(BOOL fLock); + + CClassFactory(LPFNCREATEINSTANCE lpfnCI, PLONG pcRefDll, IID *riidInst) : m_Ref(1), m_lpfnCI(lpfnCI), m_IID(riidInst) + {}; + + virtual ~CClassFactory(){}; + +protected: + LONG m_Ref; + LPFNCREATEINSTANCE m_lpfnCI; + IID * m_IID; +}; + +HRESULT +WINAPI +CClassFactory::QueryInterface( + REFIID riid, + LPVOID *ppvObj) +{ + *ppvObj = NULL; + if(IsEqualIID(riid, IID_IUnknown) || IsEqualIID(riid, IID_IClassFactory)) + { + *ppvObj = PVOID(this); + InterlockedIncrement(&m_Ref); + return S_OK; + } + return E_NOINTERFACE; +} + +HRESULT +WINAPI +CClassFactory::CreateInstance( + LPUNKNOWN pUnkOuter, + REFIID riid, + LPVOID *ppvObject) +{ + *ppvObject = NULL; + + if ( m_IID == NULL || IsEqualCLSID(riid, *m_IID) || IsEqualCLSID(riid, IID_IUnknown)) + { + return m_lpfnCI(pUnkOuter, riid, ppvObject); + } + + return E_NOINTERFACE; +} + +HRESULT +WINAPI +CClassFactory::LockServer( + BOOL fLock) +{ + return E_NOTIMPL; +} + +IClassFactory * +CClassFactory_fnConstructor( + LPFNCREATEINSTANCE lpfnCI, + PLONG pcRefDll, + IID * riidInst) +{ + CClassFactory* factory = new CClassFactory(lpfnCI, pcRefDll, riidInst); + + if (!factory) + return NULL; + + if (pcRefDll) + InterlockedIncrement(pcRefDll); + + return (LPCLASSFACTORY)factory; +} +
Propchange: trunk/reactos/dll/directx/msvidctl/classfactory.cpp ------------------------------------------------------------------------------ svn:eol-style = native
Added: trunk/reactos/dll/directx/msvidctl/enumtuningspaces.cpp URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/msvidctl/enumtu... ============================================================================== --- trunk/reactos/dll/directx/msvidctl/enumtuningspaces.cpp (added) +++ trunk/reactos/dll/directx/msvidctl/enumtuningspaces.cpp [iso-8859-1] Mon Mar 1 16:28:28 2010 @@ -1,0 +1,142 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS BDA Proxy + * FILE: dll/directx/msvidctl/tuningspace.cpp + * PURPOSE: ITuningSpace interface + * + * PROGRAMMERS: Johannes Anderwald (janderwald@reactos.org) + */ +#include "precomp.h" + +class CEnumTuningSpaces : public IEnumTuningSpaces +{ +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) + { + //delete this; + return 0; + } + return m_Ref; + } + + // IEnumTuningSpaces methods + HRESULT STDMETHODCALLTYPE Next(ULONG celt, ITuningSpace **rgelt, ULONG *pceltFetched); + HRESULT STDMETHODCALLTYPE Skip(ULONG celt); + HRESULT STDMETHODCALLTYPE Reset(); + HRESULT STDMETHODCALLTYPE Clone(IEnumTuningSpaces **ppEnum); + + CEnumTuningSpaces() : m_Ref(0){}; + + virtual ~CEnumTuningSpaces(){}; + +protected: + LONG m_Ref; +}; + +HRESULT +STDMETHODCALLTYPE +CEnumTuningSpaces::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_IEnumTuningSpaces)) + { + *Output = (IEnumTuningSpaces*)this; + reinterpret_cast<IEnumTuningSpaces*>(*Output)->AddRef(); + return NOERROR; + } + + WCHAR Buffer[MAX_PATH]; + LPOLESTR lpstr; + StringFromCLSID(refiid, &lpstr); + swprintf(Buffer, L"CEnumTuningSpaces::QueryInterface: NoInterface for %s\n", lpstr); + OutputDebugStringW(Buffer); + CoTaskMemFree(lpstr); + + return E_NOINTERFACE; +} + +//------------------------------------------------------------------- +// IEnumTuningSpaces +// +HRESULT +STDMETHODCALLTYPE +CEnumTuningSpaces::Next(ULONG celt, ITuningSpace **rgelt, ULONG *pceltFetched) +{ + OutputDebugStringW(L"CEnumTuningSpaces::Next : stub\n"); + return CTuningSpace_fnConstructor(NULL, IID_ITuningSpace, (void**)rgelt); + +} + +HRESULT +STDMETHODCALLTYPE +CEnumTuningSpaces::Skip(ULONG celt) +{ + OutputDebugStringW(L"CEnumTuningSpaces::Skip : NotImplemented\n"); + return E_NOTIMPL; +} + +HRESULT +STDMETHODCALLTYPE +CEnumTuningSpaces::Reset() +{ + OutputDebugStringW(L"CEnumTuningSpaces::Reset : NotImplemented\n"); + return E_NOTIMPL; +} + +HRESULT +STDMETHODCALLTYPE +CEnumTuningSpaces::Clone(IEnumTuningSpaces **ppEnum) +{ + OutputDebugStringW(L"CEnumTuningSpaces::Clone : NotImplemented\n"); + return E_NOTIMPL; +} + +HRESULT +WINAPI +CEnumTuningSpaces_fnConstructor( + IUnknown *pUnknown, + REFIID riid, + LPVOID * ppv) +{ + // construct device control + CEnumTuningSpaces * tuningspaces = new CEnumTuningSpaces(); + +#ifdef MSVIDCTL_TRACE + WCHAR Buffer[MAX_PATH]; + LPOLESTR lpstr; + StringFromCLSID(riid, &lpstr); + swprintf(Buffer, L"CEnumTuningSpaces_fnConstructor riid %s pUnknown %p\n", lpstr, pUnknown); + OutputDebugStringW(Buffer); +#endif + + if (!tuningspaces) + return E_OUTOFMEMORY; + + if (FAILED(tuningspaces->QueryInterface(riid, ppv))) + { + /* not supported */ + delete tuningspaces; + return E_NOINTERFACE; + } + + return NOERROR; +} +
Propchange: trunk/reactos/dll/directx/msvidctl/enumtuningspaces.cpp ------------------------------------------------------------------------------ svn:eol-style = native
Added: trunk/reactos/dll/directx/msvidctl/msvidctl.cpp URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/msvidctl/msvidc... ============================================================================== --- trunk/reactos/dll/directx/msvidctl/msvidctl.cpp (added) +++ trunk/reactos/dll/directx/msvidctl/msvidctl.cpp [iso-8859-1] Mon Mar 1 16:28:28 2010 @@ -1,0 +1,106 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS DVB + * FILE: dll/directx/msvidctl/msvidctl.cpp + * PURPOSE: ReactOS DVB Initialization + * + * PROGRAMMERS: Johannes Anderwald (janderwald@reactos.org) + */ + +#include "precomp.h" + +static INTERFACE_TABLE InterfaceTable[] = +{ + {&CLSID_SystemTuningSpaces, CTuningSpaceContainer_fnConstructor}, + {NULL, NULL} +}; + +extern "C" +BOOL +WINAPI +DllMain( + HINSTANCE hInstDLL, + DWORD fdwReason, + LPVOID lpvReserved) +{ + switch (fdwReason) + { + case DLL_PROCESS_ATTACH: + CoInitialize(NULL); + +#ifdef MSDVBNP_TRACE + OutputDebugStringW(L"MSVIDCTL::DllMain()\n"); +#endif + + DisableThreadLibraryCalls(hInstDLL); + break; + default: + break; + } + + return TRUE; +} + + +extern "C" +KSDDKAPI +HRESULT +WINAPI +DllUnregisterServer(void) +{ + return S_OK; +} + +extern "C" +KSDDKAPI +HRESULT +WINAPI +DllRegisterServer(void) +{ + return S_OK; +} + +KSDDKAPI +HRESULT +WINAPI +DllGetClassObject( + REFCLSID rclsid, + REFIID riid, + LPVOID *ppv) +{ + UINT i; + HRESULT hres = E_OUTOFMEMORY; + IClassFactory * pcf = NULL; + + if (!ppv) + return E_INVALIDARG; + + *ppv = NULL; + + for (i = 0; InterfaceTable[i].riid; i++) + { + if (IsEqualIID(*InterfaceTable[i].riid, rclsid)) + { + pcf = CClassFactory_fnConstructor(InterfaceTable[i].lpfnCI, NULL, NULL); + break; + } + } + + if (!pcf) + { + return CLASS_E_CLASSNOTAVAILABLE; + } + + hres = pcf->QueryInterface(riid, ppv); + pcf->Release(); + + return hres; +} + +KSDDKAPI +HRESULT +WINAPI +DllCanUnloadNow(void) +{ + return S_OK; +}
Propchange: trunk/reactos/dll/directx/msvidctl/msvidctl.cpp ------------------------------------------------------------------------------ svn:eol-style = native
Added: trunk/reactos/dll/directx/msvidctl/msvidctl.rbuild URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/msvidctl/msvidc... ============================================================================== --- trunk/reactos/dll/directx/msvidctl/msvidctl.rbuild (added) +++ trunk/reactos/dll/directx/msvidctl/msvidctl.rbuild [iso-8859-1] Mon Mar 1 16:28:28 2010 @@ -1,0 +1,30 @@ +<?xml version="1.0"?> +<!DOCTYPE module SYSTEM "../../../tools/rbuild/project.dtd"> +<group> +<module name="msvidctl" type="win32dll" baseaddress="${BASEADDRESS_MSVIDCTL}" installbase="system32" installname="msvidctl.dll"> + <importlibrary definition="msvidctl.spec" /> + <include base="msvidctl">.</include> + <library>ntdll</library> + <library>kernel32</library> + <library>advapi32</library> + <library>ole32</library> + <library>advapi32</library> + <library>msvcrt</library> + <library>strmiids</library> + <group compilerset="gcc"> + <compilerflag compiler="cxx">-fno-exceptions</compilerflag> + <compilerflag compiler="cxx">-fno-rtti</compilerflag> + </group> + <group compilerset="msc"> + <compilerflag compiler="cxx">/GR-</compilerflag> + </group> + + <file>classfactory.cpp</file> + <file>enumtuningspaces.cpp</file> + <file>msvidctl.cpp</file> + <file>msvidctl.rc</file> + <file>tunerequest.cpp</file> + <file>tuningspace.cpp</file> + <file>tuningspace_container.cpp</file> +</module> +</group>
Propchange: trunk/reactos/dll/directx/msvidctl/msvidctl.rbuild ------------------------------------------------------------------------------ svn:eol-style = native
Added: trunk/reactos/dll/directx/msvidctl/msvidctl.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/msvidctl/msvidc... ============================================================================== --- trunk/reactos/dll/directx/msvidctl/msvidctl.rc (added) +++ trunk/reactos/dll/directx/msvidctl/msvidctl.rc [iso-8859-1] Mon Mar 1 16:28:28 2010 @@ -1,0 +1,12 @@ +#include <windows.h> + +LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL + +#define REACTOS_VERSION_DLL +#define REACTOS_STR_FILE_DESCRIPTION "ReactOS ActiveX Control for Streaming Video\0" +#define REACTOS_STR_INTERNAL_NAME "MSVidCtl\0" +#define REACTOS_STR_ORIGINAL_FILENAME "MSVidCtl\0" +#define REACTOS_STR_PRODUCT_VERSION "6.05.2600.3264\0" +#define REACTOS_STR_FILE_VERSION "6.05.2600.3264\0" + +#include <reactos/version.rc>
Propchange: trunk/reactos/dll/directx/msvidctl/msvidctl.rc ------------------------------------------------------------------------------ svn:eol-style = native
Added: trunk/reactos/dll/directx/msvidctl/msvidctl.spec URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/msvidctl/msvidc... ============================================================================== --- trunk/reactos/dll/directx/msvidctl/msvidctl.spec (added) +++ trunk/reactos/dll/directx/msvidctl/msvidctl.spec [iso-8859-1] Mon Mar 1 16:28:28 2010 @@ -1,0 +1,4 @@ +@ stdcall DllCanUnloadNow() +@ stdcall DllGetClassObject(ptr ptr ptr) +@ stdcall DllRegisterServer() +@ stdcall DllUnregisterServer()
Propchange: trunk/reactos/dll/directx/msvidctl/msvidctl.spec ------------------------------------------------------------------------------ svn:eol-style = native
Added: trunk/reactos/dll/directx/msvidctl/precomp.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/msvidctl/precom... ============================================================================== --- trunk/reactos/dll/directx/msvidctl/precomp.h (added) +++ trunk/reactos/dll/directx/msvidctl/precomp.h [iso-8859-1] Mon Mar 1 16:28:28 2010 @@ -1,0 +1,72 @@ +#ifndef PRECOMP_H__ +#define PRECOMP_H__ + +#define MSVIDCTL_TRACE +#define BUILDING_KS +#define _KSDDK_ +#include <dshow.h> +//#include <streams.h> +#include <ks.h> +#define __STREAMS__ +#include <ksproxy.h> +#include <stdio.h> +#include <wchar.h> +#include <tchar.h> +#include <uuids.h> +#include <bdatypes.h> +#include <bdaiface.h> +#include <bdamedia.h> +#include <tuner.h> +#include <assert.h> + +typedef HRESULT (CALLBACK *LPFNCREATEINSTANCE)(IUnknown* pUnkOuter, REFIID riid, LPVOID* ppvObject); + +typedef struct +{ + const GUID* riid; + LPFNCREATEINSTANCE lpfnCI; +} INTERFACE_TABLE; + +/* classfactory.cpp */ +IClassFactory * +CClassFactory_fnConstructor( + LPFNCREATEINSTANCE lpfnCI, + PLONG pcRefDll, + IID * riidInst); + +/* tuningspace_container.cpp */ +HRESULT +WINAPI +CTuningSpaceContainer_fnConstructor( + IUnknown *pUnknown, + REFIID riid, + LPVOID * ppv); + +/* tuningspace.cpp */ +HRESULT +WINAPI +CTuningSpace_fnConstructor( + IUnknown *pUnknown, + REFIID riid, + LPVOID * ppv); + +/* tunerequest.cpp */ +HRESULT +WINAPI +CTuneRequest_fnConstructor( + IUnknown *pUnknown, + ITuningSpace * TuningSpace, + REFIID riid, + LPVOID * ppv); + +/* enumtuningspaces.cpp */ +HRESULT +WINAPI +CEnumTuningSpaces_fnConstructor( + IUnknown *pUnknown, + REFIID riid, + LPVOID * ppv); + + + +#endif
Propchange: trunk/reactos/dll/directx/msvidctl/precomp.h ------------------------------------------------------------------------------ svn:eol-style = native
Added: trunk/reactos/dll/directx/msvidctl/tunerequest.cpp URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/msvidctl/tunere... ============================================================================== --- trunk/reactos/dll/directx/msvidctl/tunerequest.cpp (added) +++ trunk/reactos/dll/directx/msvidctl/tunerequest.cpp [iso-8859-1] Mon Mar 1 16:28:28 2010 @@ -1,0 +1,331 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS BDA Proxy + * FILE: dll/directx/msvidctl/tuningspace.cpp + * PURPOSE: ITuningRequest interface + * + * PROGRAMMERS: Johannes Anderwald (janderwald@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; +}; + + +HRESULT +STDMETHODCALLTYPE +CTuneRequest::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 +// +HRESULT +STDMETHODCALLTYPE +CTuneRequest::GetTypeInfoCount(UINT *pctinfo) +{ + OutputDebugStringW(L"CTuneRequest::GetTypeInfoCount : NotImplemented\n"); + return E_NOTIMPL; +} + +HRESULT +STDMETHODCALLTYPE +CTuneRequest::GetTypeInfo(UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo) +{ + OutputDebugStringW(L"CTuneRequest::GetTypeInfo : NotImplemented\n"); + return E_NOTIMPL; +} +HRESULT +STDMETHODCALLTYPE +CTuneRequest::GetIDsOfNames(REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId) +{ + OutputDebugStringW(L"CTuneRequest::GetIDsOfNames : NotImplemented\n"); + return E_NOTIMPL; +} +HRESULT +STDMETHODCALLTYPE +CTuneRequest::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 +// + +HRESULT +STDMETHODCALLTYPE +CTuneRequest::get_TuningSpace(ITuningSpace **TuningSpace) +{ +#ifdef MSVIDCTL_TRACE + OutputDebugStringW(L"CTuneRequest::get_TuningSpace\n"); +#endif + + *TuningSpace = m_TuningSpace; + m_TuningSpace->AddRef(); + + return S_OK; +} + +HRESULT +STDMETHODCALLTYPE +CTuneRequest::get_Components(IComponents **Components) +{ + OutputDebugStringW(L"CTuneRequest::get_Components : NotImplemented\n"); + return E_NOTIMPL; +} + +HRESULT +STDMETHODCALLTYPE +CTuneRequest::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; +} + +HRESULT +STDMETHODCALLTYPE +CTuneRequest::get_Locator(ILocator **Locator) +{ + OutputDebugStringW(L"CTuneRequest::get_Locator : NotImplemented\n"); + return E_NOTIMPL; +} + +HRESULT +STDMETHODCALLTYPE +CTuneRequest::put_Locator(ILocator *Locator) +{ + OutputDebugStringW(L"CTuneRequest::put_Locator : stub\n"); + m_Locator = Locator; + + return S_OK; +} + +//------------------------------------------------------------------- +// IDVBTuneRequest interface +// + +HRESULT +STDMETHODCALLTYPE +CTuneRequest::get_ONID(long *ONID) +{ +#ifdef MSVIDCTL_TRACE + OutputDebugStringW(L"CTuneRequest::get_ONID\n"); +#endif + + *ONID = m_ONID; + return S_OK; +} + +HRESULT +STDMETHODCALLTYPE +CTuneRequest::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; +} + +HRESULT +STDMETHODCALLTYPE +CTuneRequest::get_TSID(long *TSID) +{ +#ifdef MSVIDCTL_TRACE + OutputDebugStringW(L"CTuneRequest::get_TSID\n"); +#endif + + *TSID = m_TSID; + return S_OK; +} + +HRESULT +STDMETHODCALLTYPE +CTuneRequest::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; +} + +HRESULT +STDMETHODCALLTYPE +CTuneRequest::get_SID(long *SID) +{ +#ifdef MSVIDCTL_TRACE + OutputDebugStringW(L"CTuneRequest::get_SID\n"); +#endif + + *SID = m_SID; + return S_OK; +} + +HRESULT +STDMETHODCALLTYPE +CTuneRequest::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; +} + +HRESULT +WINAPI +CTuneRequest_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; +}
Propchange: trunk/reactos/dll/directx/msvidctl/tunerequest.cpp ------------------------------------------------------------------------------ svn:eol-style = native
Added: trunk/reactos/dll/directx/msvidctl/tuningspace.cpp URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/msvidctl/tuning... ============================================================================== --- trunk/reactos/dll/directx/msvidctl/tuningspace.cpp (added) +++ trunk/reactos/dll/directx/msvidctl/tuningspace.cpp [iso-8859-1] Mon Mar 1 16:28:28 2010 @@ -1,0 +1,365 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS BDA Proxy + * FILE: dll/directx/msvidctl/tuningspace.cpp + * PURPOSE: ITuningSpace interface + * + * PROGRAMMERS: Johannes Anderwald (janderwald@reactos.org) + */ +#include "precomp.h" + +const GUID CLSID_DVBTNetworkProvider = {0x216c62df, 0x6d7f, 0x4e9a, {0x85, 0x71, 0x5, 0xf1, 0x4e, 0xdb, 0x76, 0x6a}}; + +class CTuningSpace : public IDVBTuningSpace +{ +public: + STDMETHODIMP QueryInterface( REFIID InterfaceId, PVOID* Interface); + + STDMETHODIMP_(ULONG) AddRef() + { + InterlockedIncrement(&m_Ref); + return m_Ref; + } + STDMETHODIMP_(ULONG) Release() + { + InterlockedDecrement(&m_Ref); + + WCHAR Buffer[100]; + swprintf(Buffer, L"CTuningSpace::Release : %p Ref %lu\n", this, m_Ref); + OutputDebugStringW(Buffer); + + if (!m_Ref) + { + //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); + + + //ITuningSpace methods + HRESULT STDMETHODCALLTYPE get_UniqueName(BSTR *Name); + HRESULT STDMETHODCALLTYPE put_UniqueName(BSTR Name); + HRESULT STDMETHODCALLTYPE get_FriendlyName(BSTR *Name); + HRESULT STDMETHODCALLTYPE put_FriendlyName(BSTR Name); + HRESULT STDMETHODCALLTYPE get_CLSID(BSTR *SpaceCLSID); + HRESULT STDMETHODCALLTYPE get_NetworkType(BSTR *NetworkTypeGuid); + HRESULT STDMETHODCALLTYPE put_NetworkType(BSTR NetworkTypeGuid); + HRESULT STDMETHODCALLTYPE get__NetworkType(GUID *NetworkTypeGuid); + HRESULT STDMETHODCALLTYPE put__NetworkType(REFCLSID NetworkTypeGuid); + HRESULT STDMETHODCALLTYPE CreateTuneRequest(ITuneRequest **TuneRequest); + HRESULT STDMETHODCALLTYPE EnumCategoryGUIDs(IEnumGUID **ppEnum); + HRESULT STDMETHODCALLTYPE EnumDeviceMonikers(IEnumMoniker **ppEnum); + HRESULT STDMETHODCALLTYPE get_DefaultPreferredComponentTypes(IComponentTypes **ComponentTypes); + HRESULT STDMETHODCALLTYPE put_DefaultPreferredComponentTypes(IComponentTypes *NewComponentTypes); + HRESULT STDMETHODCALLTYPE get_FrequencyMapping(BSTR *pMapping); + HRESULT STDMETHODCALLTYPE put_FrequencyMapping(BSTR Mapping); + HRESULT STDMETHODCALLTYPE get_DefaultLocator(ILocator **LocatorVal); + HRESULT STDMETHODCALLTYPE put_DefaultLocator(ILocator *LocatorVal); + HRESULT STDMETHODCALLTYPE Clone(ITuningSpace **NewTS); + // IDVBTuningSpace + HRESULT STDMETHODCALLTYPE get_SystemType(DVBSystemType *SysType); + HRESULT STDMETHODCALLTYPE put_SystemType(DVBSystemType SysType); + + CTuningSpace() : m_Ref(0){}; + + virtual ~CTuningSpace(){}; + +protected: + LONG m_Ref; +}; + +HRESULT +STDMETHODCALLTYPE +CTuningSpace::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_ITuningSpace)) + { + *Output = (ITuningSpace*)this; + reinterpret_cast<ITuningSpace*>(*Output)->AddRef(); + return NOERROR; + } + + if (IsEqualGUID(refiid, IID_IDVBTuningSpace)) + { + *Output = (IDVBTuningSpace*)this; + reinterpret_cast<IDVBTuningSpace*>(*Output)->AddRef(); + return NOERROR; + } + + + WCHAR Buffer[MAX_PATH]; + LPOLESTR lpstr; + StringFromCLSID(refiid, &lpstr); + swprintf(Buffer, L"CTuningSpace::QueryInterface: NoInterface for %s", lpstr); + OutputDebugStringW(Buffer); + CoTaskMemFree(lpstr); + + + return E_NOINTERFACE; +} + +//------------------------------------------------------------------- +// IDispatch methods +// +HRESULT +STDMETHODCALLTYPE +CTuningSpace::GetTypeInfoCount(UINT *pctinfo) +{ + OutputDebugStringW(L"CTuningSpace::GetTypeInfoCount : NotImplemented\n"); + return E_NOTIMPL; +} + +HRESULT +STDMETHODCALLTYPE +CTuningSpace::GetTypeInfo(UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo) +{ + OutputDebugStringW(L"CTuningSpace::GetTypeInfo : NotImplemented\n"); + return E_NOTIMPL; +} +HRESULT +STDMETHODCALLTYPE +CTuningSpace::GetIDsOfNames(REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId) +{ + OutputDebugStringW(L"CTuningSpace::GetIDsOfNames : NotImplemented\n"); + return E_NOTIMPL; +} +HRESULT +STDMETHODCALLTYPE +CTuningSpace::Invoke(DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr) +{ + OutputDebugStringW(L"CTuningSpace::Invoke : NotImplemented\n"); + return E_NOTIMPL; +} + + +//------------------------------------------------------------------- +// ITuningSpace interface +// + +HRESULT +STDMETHODCALLTYPE +CTuningSpace::get_UniqueName(BSTR *Name) +{ + OutputDebugStringW(L"CTuningSpace::get_UniqueName : NotImplemented\n"); + return E_NOTIMPL; +} + +HRESULT +STDMETHODCALLTYPE +CTuningSpace::put_UniqueName(BSTR Name) +{ + OutputDebugStringW(L"CTuningSpace::put_UniqueName : NotImplemented\n"); + return E_NOTIMPL; +} + +HRESULT +STDMETHODCALLTYPE +CTuningSpace::get_FriendlyName(BSTR *Name) +{ + OutputDebugStringW(L"CTuningSpace::get_FriendlyName : NotImplemented\n"); + return E_NOTIMPL; +} + +HRESULT +STDMETHODCALLTYPE +CTuningSpace::put_FriendlyName(BSTR Name) +{ + OutputDebugStringW(L"CTuningSpace::put_FriendlyName : NotImplemented\n"); + return E_NOTIMPL; +} + +HRESULT +STDMETHODCALLTYPE +CTuningSpace::get_CLSID(BSTR *SpaceCLSID) +{ + OutputDebugStringW(L"CTuningSpace::get_CLSID : NotImplemented\n"); + return E_NOTIMPL; +} + +HRESULT +STDMETHODCALLTYPE +CTuningSpace::get_NetworkType(BSTR *NetworkTypeGuid) +{ + OutputDebugStringW(L"CTuningSpace::get_NetworkType : stub\n"); + return StringFromCLSID(CLSID_DVBTNetworkProvider, (LPOLESTR*)NetworkTypeGuid); + +} + +HRESULT +STDMETHODCALLTYPE +CTuningSpace::put_NetworkType(BSTR NetworkTypeGuid) +{ + OutputDebugStringW(L"CTuningSpace::put_NetworkType : NotImplemented\n"); + return E_NOTIMPL; +} + +HRESULT +STDMETHODCALLTYPE +CTuningSpace::get__NetworkType(GUID *NetworkTypeGuid) +{ +#ifdef MSVIDCTL_TRACE + WCHAR Buffer[100]; + swprintf(Buffer, L"CTuningSpace::get__NetworkType : %p stub\n", NetworkTypeGuid); + OutputDebugStringW(Buffer); +#endif + + CopyMemory(NetworkTypeGuid, &CLSID_DVBTNetworkProvider, sizeof(GUID)); + OutputDebugStringW(L"CTuningSpace::get__NetworkType : done\n"); + return S_OK; +} + +HRESULT +STDMETHODCALLTYPE +CTuningSpace::put__NetworkType(REFCLSID NetworkTypeGuid) +{ + OutputDebugStringW(L"CTuningSpace::put__NetworkType : NotImplemented\n"); + return E_NOTIMPL; +} + +HRESULT +STDMETHODCALLTYPE +CTuningSpace::CreateTuneRequest(ITuneRequest **TuneRequest) +{ + OutputDebugStringW(L"CTuningSpace::CreateTuneRequest : stub\n"); + return CTuneRequest_fnConstructor(NULL, (ITuningSpace*)this, IID_ITuneRequest, (void**)TuneRequest); +} + +HRESULT +STDMETHODCALLTYPE +CTuningSpace::EnumCategoryGUIDs(IEnumGUID **ppEnum) +{ + OutputDebugStringW(L"CTuningSpace::EnumCategoryGUIDs : NotImplemented\n"); + return E_NOTIMPL; +} + +HRESULT +STDMETHODCALLTYPE +CTuningSpace::EnumDeviceMonikers(IEnumMoniker **ppEnum) +{ + OutputDebugStringW(L"CTuningSpace::EnumDeviceMonikers : NotImplemented\n"); + return E_NOTIMPL; +} + +HRESULT +STDMETHODCALLTYPE +CTuningSpace::get_DefaultPreferredComponentTypes(IComponentTypes **ComponentTypes) +{ + OutputDebugStringW(L"CTuningSpace::get_DefaultPreferredComponentTypes : NotImplemented\n"); + return E_NOTIMPL; +} + +HRESULT +STDMETHODCALLTYPE +CTuningSpace::put_DefaultPreferredComponentTypes(IComponentTypes *NewComponentTypes) +{ + OutputDebugStringW(L"CTuningSpace::put_DefaultPreferredComponentTypes : NotImplemented\n"); + return E_NOTIMPL; +} + +HRESULT +STDMETHODCALLTYPE +CTuningSpace::get_FrequencyMapping(BSTR *pMapping) +{ + OutputDebugStringW(L"CTuningSpace::get_FrequencyMapping : NotImplemented\n"); + return E_NOTIMPL; +} + +HRESULT +STDMETHODCALLTYPE +CTuningSpace::put_FrequencyMapping(BSTR Mapping) +{ + OutputDebugStringW(L"CTuningSpace::put_FrequencyMapping : NotImplemented\n"); + return E_NOTIMPL; +} + +HRESULT +STDMETHODCALLTYPE +CTuningSpace::get_DefaultLocator(ILocator **LocatorVal) +{ + OutputDebugStringW(L"CTuningSpace::get_DefaultLocator : NotImplemented\n"); + return E_NOTIMPL; +} + +HRESULT +STDMETHODCALLTYPE +CTuningSpace::put_DefaultLocator(ILocator *LocatorVal) +{ + OutputDebugStringW(L"CTuningSpace::put_DefaultLocator : NotImplemented\n"); + return E_NOTIMPL; +} + +HRESULT +STDMETHODCALLTYPE +CTuningSpace::Clone(ITuningSpace **NewTS) +{ + OutputDebugStringW(L"CTuningSpace::Clone : NotImplemented\n"); + return E_NOTIMPL; +} + +//------------------------------------------------------------------- +// IDVBTuningSpace +// +HRESULT +STDMETHODCALLTYPE +CTuningSpace::get_SystemType(DVBSystemType *SysType) +{ + OutputDebugStringW(L"CTuningSpace::get_SystemType : NotImplemented\n"); + return E_NOTIMPL; +} + +HRESULT +STDMETHODCALLTYPE +CTuningSpace::put_SystemType(DVBSystemType SysType) +{ + OutputDebugStringW(L"CTuningSpace::put_SystemType : NotImplemented\n"); + return E_NOTIMPL; +} + +HRESULT +WINAPI +CTuningSpace_fnConstructor( + IUnknown *pUnknown, + REFIID riid, + LPVOID * ppv) +{ + // construct device control + CTuningSpace * space = new CTuningSpace(); + +#ifdef MSVIDCTL_TRACE + WCHAR Buffer[MAX_PATH]; + LPOLESTR lpstr; + StringFromCLSID(riid, &lpstr); + swprintf(Buffer, L"CTuningSpace_fnConstructor riid %s pUnknown %p\n", lpstr, pUnknown); + OutputDebugStringW(Buffer); +#endif + + if (!space) + return E_OUTOFMEMORY; + + if (FAILED(space->QueryInterface(riid, ppv))) + { + /* not supported */ + delete space; + return E_NOINTERFACE; + } + + return NOERROR; +} + +
Propchange: trunk/reactos/dll/directx/msvidctl/tuningspace.cpp ------------------------------------------------------------------------------ svn:eol-style = native
Added: trunk/reactos/dll/directx/msvidctl/tuningspace_container.cpp URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/msvidctl/tuning... ============================================================================== --- trunk/reactos/dll/directx/msvidctl/tuningspace_container.cpp (added) +++ trunk/reactos/dll/directx/msvidctl/tuningspace_container.cpp [iso-8859-1] Mon Mar 1 16:28:28 2010 @@ -1,0 +1,272 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS BDA Proxy + * FILE: dll/directx/msvidctl/tuningspace_container.cpp + * PURPOSE: ITuningSpaceContainer interface + * + * PROGRAMMERS: Johannes Anderwald (janderwald@reactos.org) + */ +#define _FORCENAMELESSUNION +#include "precomp.h" + + +class CTuningSpaceContainer : public ITuningSpaceContainer +{ +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"CTuningSpaceContainer::Release : delete\n"); + //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); + + //ITuningSpaceContainer methods + HRESULT STDMETHODCALLTYPE get_Count(long *Count); + HRESULT STDMETHODCALLTYPE get__NewEnum(IEnumVARIANT **NewEnum); + HRESULT STDMETHODCALLTYPE get_Item(VARIANT varIndex, ITuningSpace **TuningSpace); + HRESULT STDMETHODCALLTYPE put_Item(VARIANT varIndex, ITuningSpace *TuningSpace); + HRESULT STDMETHODCALLTYPE TuningSpacesForCLSID(BSTR SpaceCLSID, ITuningSpaces **NewColl); + HRESULT STDMETHODCALLTYPE _TuningSpacesForCLSID(REFCLSID SpaceCLSID, ITuningSpaces **NewColl); + HRESULT STDMETHODCALLTYPE TuningSpacesForName(BSTR Name, ITuningSpaces **NewColl); + HRESULT STDMETHODCALLTYPE FindID(ITuningSpace *TuningSpace, long *ID); + HRESULT STDMETHODCALLTYPE Add(ITuningSpace *TuningSpace, VARIANT *NewIndex); + HRESULT STDMETHODCALLTYPE get_EnumTuningSpaces(IEnumTuningSpaces **ppEnum); + HRESULT STDMETHODCALLTYPE Remove(VARIANT Index); + HRESULT STDMETHODCALLTYPE get_MaxCount(long *MaxCount); + HRESULT STDMETHODCALLTYPE put_MaxCount(long MaxCount); + + CTuningSpaceContainer() : m_Ref(0){}; + + virtual ~CTuningSpaceContainer(){}; + +protected: + LONG m_Ref; + +}; + +HRESULT +STDMETHODCALLTYPE +CTuningSpaceContainer::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_ITuningSpaceContainer)) + { + *Output = (ITuningSpaceContainer*)this; + reinterpret_cast<ITuningSpaceContainer*>(*Output)->AddRef(); + return NOERROR; + } + + WCHAR Buffer[MAX_PATH]; + LPOLESTR lpstr; + StringFromCLSID(refiid, &lpstr); + swprintf(Buffer, L"CTuningSpaceContainer::QueryInterface: NoInterface for %s", lpstr); + OutputDebugStringW(Buffer); + CoTaskMemFree(lpstr); + + + return E_NOINTERFACE; +} + +//------------------------------------------------------------------- +// IDispatch methods +// +HRESULT +STDMETHODCALLTYPE +CTuningSpaceContainer::GetTypeInfoCount(UINT *pctinfo) +{ + OutputDebugStringW(L"CTuningSpaceContainer::GetTypeInfoCount : NotImplemented\n"); + return E_NOTIMPL; +} + +HRESULT +STDMETHODCALLTYPE +CTuningSpaceContainer::GetTypeInfo(UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo) +{ + OutputDebugStringW(L"CTuningSpaceContainer::GetTypeInfo : NotImplemented\n"); + return E_NOTIMPL; +} +HRESULT +STDMETHODCALLTYPE +CTuningSpaceContainer::GetIDsOfNames(REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId) +{ + OutputDebugStringW(L"CTuningSpaceContainer::GetIDsOfNames : NotImplemented\n"); + return E_NOTIMPL; +} +HRESULT +STDMETHODCALLTYPE +CTuningSpaceContainer::Invoke(DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr) +{ + OutputDebugStringW(L"CTuningSpaceContainer::Invoke : NotImplemented\n"); + return E_NOTIMPL; +} + +//------------------------------------------------------------------- +// ITuningSpaceContainer methods +// + +HRESULT +STDMETHODCALLTYPE +CTuningSpaceContainer::get_Count(long *Count) +{ + OutputDebugStringW(L"CTuningSpaceContainer::get_Count : NotImplemented\n"); + return E_NOTIMPL; +} +HRESULT +STDMETHODCALLTYPE +CTuningSpaceContainer::get__NewEnum(IEnumVARIANT **NewEnum) +{ + OutputDebugStringW(L"CTuningSpaceContainer::get__NewEnum : NotImplemented\n"); + return E_NOTIMPL; +} + +HRESULT +STDMETHODCALLTYPE +CTuningSpaceContainer::get_Item(VARIANT varIndex, ITuningSpace **TuningSpace) +{ +#ifdef MSVIDCTL_TRACE + WCHAR Buffer[100]; + swprintf(Buffer, L"CTuningSpaceContainer::get_Item : type %x value %s stub\n", varIndex.vt, varIndex.bstrVal); + OutputDebugStringW(Buffer); +#endif + + return CTuningSpace_fnConstructor(NULL, IID_ITuningSpace, (void**)TuningSpace); +} +HRESULT +STDMETHODCALLTYPE +CTuningSpaceContainer::put_Item(VARIANT varIndex, ITuningSpace *TuningSpace) +{ + OutputDebugStringW(L"CTuningSpaceContainer::put_Item : NotImplemented\n"); + return E_NOTIMPL; +} + +HRESULT +STDMETHODCALLTYPE +CTuningSpaceContainer::TuningSpacesForCLSID(BSTR SpaceCLSID, ITuningSpaces **NewColl) +{ + OutputDebugStringW(L"CTuningSpaceContainer::TuningSpacesForCLSID : NotImplemented\n"); + return E_NOTIMPL; +} +HRESULT +STDMETHODCALLTYPE +CTuningSpaceContainer::_TuningSpacesForCLSID(REFCLSID SpaceCLSID, ITuningSpaces **NewColl) +{ + OutputDebugStringW(L"CTuningSpaceContainer::_TuningSpacesForCLSID : NotImplemented\n"); + return E_NOTIMPL; +} + +HRESULT +STDMETHODCALLTYPE +CTuningSpaceContainer::TuningSpacesForName(BSTR Name, ITuningSpaces **NewColl) +{ + OutputDebugStringW(L"CTuningSpaceContainer::TuningSpacesForName : NotImplemented\n"); + return E_NOTIMPL; +} + +HRESULT +STDMETHODCALLTYPE +CTuningSpaceContainer::FindID(ITuningSpace *TuningSpace, long *ID) +{ + OutputDebugStringW(L"CTuningSpaceContainer::FindID : NotImplemented\n"); + return E_NOTIMPL; +} + +HRESULT +STDMETHODCALLTYPE +CTuningSpaceContainer::Add(ITuningSpace *TuningSpace, VARIANT *NewIndex) +{ + OutputDebugStringW(L"CTuningSpaceContainer::Add : stub\n"); + TuningSpace->AddRef(); + NewIndex->vt = VT_BSTR; + InterlockedIncrement(&m_Ref); + return TuningSpace->get_FriendlyName(&NewIndex->bstrVal);; +} +HRESULT +STDMETHODCALLTYPE +CTuningSpaceContainer::get_EnumTuningSpaces(IEnumTuningSpaces **ppEnum) +{ + OutputDebugStringW(L"CTuningSpaceContainer::get_EnumTuningSpaces : stub\n"); + return CEnumTuningSpaces_fnConstructor(NULL, IID_IEnumTuningSpaces, (void**)ppEnum); +} + +HRESULT +STDMETHODCALLTYPE +CTuningSpaceContainer::Remove(VARIANT Index) +{ + OutputDebugStringW(L"CTuningSpaceContainer::Remove: NotImplemented\n"); + return E_NOTIMPL; +} + +HRESULT +STDMETHODCALLTYPE +CTuningSpaceContainer::get_MaxCount(long *MaxCount) +{ + OutputDebugStringW(L"CTuningSpaceContainer::get_MaxCount : NotImplemented\n"); + return E_NOTIMPL; +} + +HRESULT +STDMETHODCALLTYPE +CTuningSpaceContainer::put_MaxCount(long MaxCount) +{ + OutputDebugStringW(L"CTuningSpaceContainer::put_MaxCount : NotImplemented\n"); + return E_NOTIMPL; +} + + +HRESULT +WINAPI +CTuningSpaceContainer_fnConstructor( + IUnknown *pUnknown, + REFIID riid, + LPVOID * ppv) +{ + // construct device control + CTuningSpaceContainer * provider = new CTuningSpaceContainer(); + +#ifdef MSVIDCTL_TRACE + WCHAR Buffer[MAX_PATH]; + LPOLESTR lpstr; + StringFromCLSID(riid, &lpstr); + swprintf(Buffer, L"CTuningSpaceContainer_fnConstructor riid %s pUnknown %p\n", lpstr, pUnknown); + OutputDebugStringW(Buffer); +#endif + + if (!provider) + return E_OUTOFMEMORY; + + if (FAILED(provider->QueryInterface(riid, ppv))) + { + /* not supported */ + delete provider; + return E_NOINTERFACE; + } + + return NOERROR; +}
Propchange: trunk/reactos/dll/directx/msvidctl/tuningspace_container.cpp ------------------------------------------------------------------------------ svn:eol-style = native