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/devic…
==============================================================================
--- 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/pinco…
==============================================================================
--- 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/preco…
==============================================================================
--- 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/classf…
==============================================================================
--- 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(a)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/msdvbn…
==============================================================================
--- 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(a)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/msdvbn…
==============================================================================
--- 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/msdvbn…
==============================================================================
--- 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/msdvbn…
==============================================================================
--- 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/networ…
==============================================================================
--- 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(a)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/precom…
==============================================================================
--- 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/scanni…
==============================================================================
--- 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(a)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/class…
==============================================================================
--- 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(a)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/enumt…
==============================================================================
--- 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(a)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/msvid…
==============================================================================
--- 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(a)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/msvid…
==============================================================================
--- 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/msvid…
==============================================================================
--- 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/msvid…
==============================================================================
--- 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/preco…
==============================================================================
--- 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/tuner…
==============================================================================
--- 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(a)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/tunin…
==============================================================================
--- 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(a)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/tunin…
==============================================================================
--- 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(a)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