/usr/x86_64-w64-mingw32/include/mspcall.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 | /**
* 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 __MSPCALL_H_
#define __MSPCALL_H_
class ATL_NO_VTABLE CMSPCallBase : public CComObjectRootEx<CComMultiThreadModelNoCS>,public IDispatchImpl<ITStreamControl,&IID_ITStreamControl,&LIBID_TAPI3Lib> {
public:
DECLARE_POLY_AGGREGATABLE(CMSPCallBase)
BEGIN_COM_MAP(CMSPCallBase)
COM_INTERFACE_ENTRY(IDispatch)
COM_INTERFACE_ENTRY(ITStreamControl)
END_COM_MAP()
DECLARE_GET_CONTROLLING_UNKNOWN()
DECLARE_VQI()
CMSPCallBase();
virtual ~CMSPCallBase();
virtual ULONG MSPCallAddRef (void) = 0;
virtual ULONG MSPCallRelease (void) = 0;
STDMETHOD (CreateStream) (long lMediaType,TERMINAL_DIRECTION Direction,ITStream **ppStream);
STDMETHOD (EnumerateStreams) (IEnumStream **ppEnumStream);
STDMETHOD (RemoveStream) (ITStream *pStream) = 0;
STDMETHOD (get_Streams) (VARIANT *pStreams);
virtual HRESULT Init(CMSPAddress *pMSPAddress,MSP_HANDLE htCall,DWORD dwReserved,DWORD dwMediaType) = 0;
virtual HRESULT ShutDown() = 0;
virtual HRESULT ReceiveTSPCallData(PBYTE pBuffer,DWORD dwSize);
HRESULT HandleStreamEvent(MSPEVENTITEM *EventItem) const;
protected:
virtual HRESULT InternalCreateStream(DWORD dwMediaType,TERMINAL_DIRECTION Direction,ITStream **ppStream) = 0;
virtual HRESULT CreateStreamObject(DWORD dwMediaType,TERMINAL_DIRECTION Direction,IMediaEvent *pGraph,ITStream **ppStream) = 0;
protected:
CMSPAddress *m_pMSPAddress;
MSP_HANDLE m_htCall;
DWORD m_dwMediaType;
CMSPArray <ITStream *> m_Streams;
CMSPCritSection m_lock;
};
class ATL_NO_VTABLE CMSPCallMultiGraph : public CMSPCallBase {
public:
typedef struct {
CMSPCallMultiGraph *pMSPCall;
ITStream *pITStream;
IMediaEvent *pIMediaEvent;
} MSPSTREAMCONTEXT,*PMSPSTREAMCONTEXT;
typedef struct _THREADPOOLWAITBLOCK {
HANDLE hWaitHandle;
MSPSTREAMCONTEXT *pContext;
WINBOOL operator ==(struct _THREADPOOLWAITBLOCK &t) { return ((hWaitHandle==t.hWaitHandle) && (pContext==t.pContext)); }
} THREADPOOLWAITBLOCK,*PTHREADPOOLWAITBLOCK;
public:
CMSPCallMultiGraph();
virtual ~CMSPCallMultiGraph();
STDMETHOD (RemoveStream) (ITStream *ppStream);
HRESULT Init(CMSPAddress *pMSPAddress,MSP_HANDLE htCall,DWORD dwReserved,DWORD dwMediaType);
HRESULT ShutDown();
static VOID NTAPI DispatchGraphEvent(VOID *pContext,BOOLEAN bFlag);
virtual VOID HandleGraphEvent(MSPSTREAMCONTEXT *pContext);
virtual HRESULT ProcessGraphEvent(ITStream *pITStream,long lEventCode,LONG_PTR lParam1,LONG_PTR lParam2);
protected:
HRESULT RegisterWaitEvent(IMediaEvent *pIMediaEvent,ITStream *pITStream);
HRESULT UnregisterWaitEvent(int index);
virtual HRESULT InternalCreateStream(DWORD dwMediaType,TERMINAL_DIRECTION Direction,ITStream **ppStream);
protected:
CMSPArray <THREADPOOLWAITBLOCK> m_ThreadPoolWaitBlocks;
};
struct MULTI_GRAPH_EVENT_DATA {
CMSPCallMultiGraph *pCall;
ITStream *pITStream;
long lEventCode;
LONG_PTR lParam1;
LONG_PTR lParam2;
IMediaEvent *pIMediaEvent;
MULTI_GRAPH_EVENT_DATA() : pIMediaEvent(NULL),pITStream(NULL),lEventCode(0),lParam1(0),lParam2(0) { }
};
DWORD WINAPI AsyncMultiGraphEvent(LPVOID pVoid);
#endif
|