/usr/i686-w64-mingw32/include/mspcall.h is in mingw-w64-i686-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
 |