2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS BDA Proxy
4 * FILE: dll/directx/bdaplgin/controlnode.cpp
5 * PURPOSE: ControlNode interface
7 * PROGRAMMERS: Johannes Anderwald (janderwald@reactos.org)
12 class CControlNode
: public IUnknown
15 STDMETHODIMP
QueryInterface( REFIID InterfaceId
, PVOID
* Interface
);
17 STDMETHODIMP_(ULONG
) AddRef()
19 InterlockedIncrement(&m_Ref
);
22 STDMETHODIMP_(ULONG
) Release()
24 InterlockedDecrement(&m_Ref
);
34 CControlNode(HANDLE hFile
, ULONG NodeType
, ULONG PinId
) : m_Ref(0), m_hFile(hFile
), m_NodeType(NodeType
), m_PinId(PinId
){};
35 virtual ~CControlNode(){};
46 CControlNode::QueryInterface(
50 WCHAR Buffer
[MAX_PATH
];
55 if (IsEqualGUID(refiid
, IID_IUnknown
))
57 *Output
= PVOID(this);
58 reinterpret_cast<IUnknown
*>(*Output
)->AddRef();
61 else if(IsEqualGUID(refiid
, IID_IBDA_FrequencyFilter
))
63 return CBDAFrequencyFilter_fnConstructor(m_hFile
, refiid
, Output
);
65 else if(IsEqualGUID(refiid
, IID_IBDA_SignalStatistics
))
67 return CBDASignalStatistics_fnConstructor(m_hFile
, refiid
, Output
);
69 else if(IsEqualGUID(refiid
, IID_IBDA_LNBInfo
))
71 return CBDALNBInfo_fnConstructor(m_hFile
, refiid
, Output
);
73 else if(IsEqualGUID(refiid
, IID_IBDA_DigitalDemodulator
))
75 return CBDADigitalDemodulator_fnConstructor(m_hFile
, refiid
, Output
);
78 StringFromCLSID(refiid
, &lpstr
);
79 swprintf(Buffer
, L
"CControlNode::QueryInterface: NoInterface for %s", lpstr
);
80 OutputDebugStringW(Buffer
);
89 CControlNode_fnConstructor(
96 // construct device control
97 CControlNode
* handler
= new CControlNode(hFile
, NodeType
, PinId
);
99 OutputDebugStringW(L
"CControlNode_fnConstructor\n");
102 return E_OUTOFMEMORY
;
104 if (FAILED(handler
->QueryInterface(riid
, ppv
)))
108 return E_NOINTERFACE
;