2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS WDM Streaming ActiveMovie Proxy
4 * FILE: dll/directx/ksproxy/interface.cpp
5 * PURPOSE: IKsInterfaceHandler interface
7 * PROGRAMMERS: Johannes Anderwald (janderwald@reactos.org)
11 const GUID IID_IKsObject
= {0x423c13a2, 0x2070, 0x11d0, {0x9e, 0xf7, 0x00, 0xaa, 0x00, 0xa2, 0x16, 0xa1}};
13 class CKsInterfaceHandler
: public IKsInterfaceHandler
16 STDMETHODIMP
QueryInterface( REFIID InterfaceId
, PVOID
* Interface
);
18 STDMETHODIMP_(ULONG
) AddRef()
20 InterlockedIncrement(&m_Ref
);
23 STDMETHODIMP_(ULONG
) Release()
25 InterlockedDecrement(&m_Ref
);
34 HRESULT STDMETHODCALLTYPE
KsSetPin(IKsPin
*KsPin
);
35 HRESULT STDMETHODCALLTYPE
KsProcessMediaSamples(IKsDataTypeHandler
*KsDataTypeHandler
, IMediaSample
** SampleList
, PLONG SampleCount
, KSIOOPERATION IoOperation
, PKSSTREAM_SEGMENT
*StreamSegment
);
36 HRESULT STDMETHODCALLTYPE
KsCompleteIo(PKSSTREAM_SEGMENT StreamSegment
);
38 CKsInterfaceHandler() : m_Ref(0), m_Handle(NULL
){};
39 virtual ~CKsInterfaceHandler(){};
48 CKsInterfaceHandler::QueryInterface(
52 if (IsEqualGUID(refiid
, IID_IUnknown
) ||
53 IsEqualGUID(refiid
, IID_IKsInterfaceHandler
))
55 *Output
= PVOID(this);
56 reinterpret_cast<IUnknown
*>(*Output
)->AddRef();
64 CKsInterfaceHandler::KsSetPin(
70 // check if IKsObject is supported
71 hr
= KsPin
->QueryInterface(IID_IKsObject
, (void**)&KsObject
);
76 m_Handle
= KsObject
->KsGetObjectHandle();
78 // release IKsObject interface
83 // expected a file handle
94 CKsInterfaceHandler::KsProcessMediaSamples(
95 IKsDataTypeHandler
*KsDataTypeHandler
,
96 IMediaSample
** SampleList
,
98 KSIOOPERATION IoOperation
,
99 PKSSTREAM_SEGMENT
*StreamSegment
)
101 OutputDebugString("UNIMPLEMENTED\n");
107 CKsInterfaceHandler::KsCompleteIo(
108 PKSSTREAM_SEGMENT StreamSegment
)
110 OutputDebugString("UNIMPLEMENTED\n");
116 CKsInterfaceHandler_Constructor(
117 IUnknown
* pUnkOuter
,
121 OutputDebugStringW(L
"CKsInterfaceHandler_Constructor\n");
123 CKsInterfaceHandler
* handler
= new CKsInterfaceHandler();
126 return E_OUTOFMEMORY
;
128 if (FAILED(handler
->QueryInterface(riid
, ppv
)))
132 return E_NOINTERFACE
;