2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS WDM Streaming ActiveMovie Proxy
4 * FILE: dll/directx/ksproxy/clockforward.cpp
5 * PURPOSE: IKsClockForwarder interface
7 * PROGRAMMERS: Johannes Anderwald (janderwald@reactos.org)
11 const GUID KSCATEGORY_QUALITY
= {0x97EBAACB, 0x95BD, 0x11D0, {0xA3, 0xEA, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}};
13 class CKsQualityForwarder
: public IKsQualityForwarder
16 STDMETHODIMP
QueryInterface( REFIID InterfaceId
, PVOID
* Interface
);
18 STDMETHODIMP_(ULONG
) AddRef()
20 InterlockedIncrement(&m_Ref
);
23 STDMETHODIMP_(ULONG
) Release()
25 InterlockedDecrement(&m_Ref
);
35 // IKsObject interface
36 HANDLE STDMETHODCALLTYPE
KsGetObjectHandle();
38 // IKsQualityForwarder
39 VOID STDMETHODCALLTYPE
KsFlushClient(IN IKsPin
*Pin
);
41 CKsQualityForwarder(HANDLE handle
) : m_Ref(0), m_Handle(handle
){}
42 virtual ~CKsQualityForwarder(){ if (m_Handle
) CloseHandle(m_Handle
);}
53 CKsQualityForwarder::QueryInterface(
57 if (IsEqualGUID(refiid
, IID_IUnknown
) ||
58 IsEqualGUID(refiid
, IID_IKsQualityForwarder
))
60 *Output
= PVOID(this);
61 reinterpret_cast<IUnknown
*>(*Output
)->AddRef();
68 //-------------------------------------------------------------------
69 // IKsObject interface
74 CKsQualityForwarder::KsGetObjectHandle()
79 //-------------------------------------------------------------------
80 // IKsQualityForwarder interface
84 CKsQualityForwarder::KsFlushClient(
87 OutputDebugString("UNIMPLEMENTED\n");
92 CKsQualityForwarder_Constructor(
100 OutputDebugStringW(L
"CKsQualityForwarder_Constructor\n");
102 // open default clock
103 hr
= KsOpenDefaultDevice(KSCATEGORY_QUALITY
, GENERIC_READ
| GENERIC_WRITE
, &handle
);
107 OutputDebugString("CKsClockForwarder_Constructor failed to open device\n");
111 CKsQualityForwarder
* quality
= new CKsQualityForwarder(handle
);
117 return E_OUTOFMEMORY
;
120 if (FAILED(quality
->QueryInterface(riid
, ppv
)))
124 return E_NOINTERFACE
;