/usr/x86_64-w64-mingw32/include/mspstrm.h is in mingw-w64-x86-64-dev 2.0.3-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 | /**
* This file has no copyright assigned and is placed in the Public Domain.
* This file is part of the w64 mingw-runtime package.
* No warranty is given; refer to the file DISCLAIMER.PD within this package.
*/
#ifndef _MSPSTRM_H_
#define _MSPSTRM_H_
#define STRM_INITIAL 0x00000000
#define STRM_TERMINALSELECTED 0x00000001
#define STRM_CONFIGURED 0x00000002
#define STRM_RUNNING 0x00000004
#define STRM_PAUSED 0x00000008
#define STRM_STOPPED 0x00000010
class CMSPStream;
class ATL_NO_VTABLE CPTEventSink : public CComObjectRootEx<CComMultiThreadModel>,public ITPluggableTerminalEventSink {
public:
CPTEventSink();
~CPTEventSink();
BEGIN_COM_MAP(CPTEventSink)
COM_INTERFACE_ENTRY(ITPluggableTerminalEventSink)
END_COM_MAP()
public:
STDMETHOD(FireEvent)(const MSP_EVENT_INFO *pMspEventInfo);
public:
HRESULT SetSinkStream(CMSPStream *pStream);
private:
struct AsyncEventStruct {
CMSPStream *pMSPStream;
MSPEVENTITEM *pEventItem;
AsyncEventStruct() : pMSPStream(NULL),pEventItem(NULL) {
LOG((MSP_TRACE,"AsyncEventStruct::AsyncEventStruct[%p]",this));
}
~AsyncEventStruct() {
pMSPStream = NULL;
pEventItem = NULL;
LOG((MSP_TRACE,"AsyncEventStruct::~AsyncEventStruct[%p]",this));
}
};
static DWORD WINAPI FireEventCallBack(LPVOID pEventStructure);
private:
CMSPStream *m_pMSPStream;
};
class ATL_NO_VTABLE CMSPStream : public CComObjectRootEx<CComMultiThreadModelNoCS>,public IDispatchImpl<ITStream,&IID_ITStream,&LIBID_TAPI3Lib> {
public:
BEGIN_COM_MAP(CMSPStream)
COM_INTERFACE_ENTRY(IDispatch)
COM_INTERFACE_ENTRY(ITStream)
COM_INTERFACE_ENTRY_AGGREGATE(IID_IMarshal,m_pFTM)
END_COM_MAP()
DECLARE_GET_CONTROLLING_UNKNOWN()
CMSPStream();
~CMSPStream();
virtual void FinalRelease();
STDMETHOD (get_MediaType) (long *plMediaType);
STDMETHOD (get_Direction) (TERMINAL_DIRECTION *pTerminalDirection);
STDMETHOD (get_Name) (BSTR *ppName) = 0;
STDMETHOD (SelectTerminal) (ITTerminal *pTerminal);
STDMETHOD (UnselectTerminal) (ITTerminal *pTerminal);
STDMETHOD (EnumerateTerminals) (IEnumTerminal **ppEnumTerminal);
STDMETHOD (get_Terminals) (VARIANT *pTerminals);
STDMETHOD (StartStream) ();
STDMETHOD (PauseStream) ();
STDMETHOD (StopStream) ();
virtual HRESULT Init(HANDLE hAddress,CMSPCallBase *pMSPCall,IMediaEvent *pGraph,DWORD dwMediaType,TERMINAL_DIRECTION Direction);
virtual HRESULT ShutDown();
virtual HRESULT GetState(DWORD *pdwStatus) { return E_NOTIMPL; }
virtual HRESULT HandleTSPData(BYTE *pData,DWORD dwSize);
virtual HRESULT ProcessGraphEvent(long lEventCode,LONG_PTR lParam1,LONG_PTR lParam2);
protected:
HRESULT RegisterPluggableTerminalEventSink(ITTerminal *pTerminal);
HRESULT UnregisterPluggableTerminalEventSink(ITTerminal *pTerminal);
HRESULT ReleaseSink();
ULONG InternalAddRef();
ULONG InternalRelease();
public:
HRESULT HandleSinkEvent(MSPEVENTITEM *pEventItem);
protected:
IUnknown *m_pFTM;
DWORD m_dwState;
DWORD m_dwMediaType;
TERMINAL_DIRECTION m_Direction;
HANDLE m_hAddress;
CMSPCallBase *m_pMSPCall;
IGraphBuilder *m_pIGraphBuilder;
IMediaControl *m_pIMediaControl;
CMSPArray <ITTerminal *> m_Terminals;
CMSPCritSection m_lock;
CMSPCritSection m_lockRefCount;
ITPluggableTerminalEventSink *m_pPTEventSink;
long m_lMyPersonalRefcount;
WINBOOL m_bFirstAddRef;
};
#endif
|