Mercurial > games > semicongine
comparison fuhtark_test/include/winapi/mspcall.h @ 1500:91c8c3b7cbf0
add: futhark tests for generating vulkan api
| author | sam <sam@basx.dev> |
|---|---|
| date | Wed, 26 Nov 2025 21:36:48 +0700 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 1499:1f58458b7ef7 | 1500:91c8c3b7cbf0 |
|---|---|
| 1 #ifndef __MSPCALL_H_ | |
| 2 #define __MSPCALL_H_ | |
| 3 | |
| 4 class ATL_NO_VTABLE CMSPCallBase : public CComObjectRootEx<CComMultiThreadModelNoCS>,public IDispatchImpl<ITStreamControl,&IID_ITStreamControl,&LIBID_TAPI3Lib> { | |
| 5 public: | |
| 6 DECLARE_POLY_AGGREGATABLE(CMSPCallBase) | |
| 7 BEGIN_COM_MAP(CMSPCallBase) | |
| 8 COM_INTERFACE_ENTRY(IDispatch) | |
| 9 COM_INTERFACE_ENTRY(ITStreamControl) | |
| 10 END_COM_MAP() | |
| 11 DECLARE_GET_CONTROLLING_UNKNOWN() | |
| 12 DECLARE_VQI() | |
| 13 CMSPCallBase(); | |
| 14 virtual ~CMSPCallBase(); | |
| 15 virtual ULONG MSPCallAddRef (void) = 0; | |
| 16 virtual ULONG MSPCallRelease (void) = 0; | |
| 17 STDMETHOD (CreateStream) (long lMediaType,TERMINAL_DIRECTION Direction,ITStream **ppStream); | |
| 18 STDMETHOD (EnumerateStreams) (IEnumStream **ppEnumStream); | |
| 19 STDMETHOD (RemoveStream) (ITStream *pStream) = 0; | |
| 20 STDMETHOD (get_Streams) (VARIANT *pStreams); | |
| 21 virtual HRESULT Init(CMSPAddress *pMSPAddress,MSP_HANDLE htCall,DWORD dwReserved,DWORD dwMediaType) = 0; | |
| 22 virtual HRESULT ShutDown() = 0; | |
| 23 virtual HRESULT ReceiveTSPCallData(PBYTE pBuffer,DWORD dwSize); | |
| 24 HRESULT HandleStreamEvent(MSPEVENTITEM *EventItem) const; | |
| 25 protected: | |
| 26 virtual HRESULT InternalCreateStream(DWORD dwMediaType,TERMINAL_DIRECTION Direction,ITStream **ppStream) = 0; | |
| 27 virtual HRESULT CreateStreamObject(DWORD dwMediaType,TERMINAL_DIRECTION Direction,IMediaEvent *pGraph,ITStream **ppStream) = 0; | |
| 28 protected: | |
| 29 CMSPAddress *m_pMSPAddress; | |
| 30 MSP_HANDLE m_htCall; | |
| 31 DWORD m_dwMediaType; | |
| 32 CMSPArray <ITStream *> m_Streams; | |
| 33 CMSPCritSection m_lock; | |
| 34 }; | |
| 35 | |
| 36 class ATL_NO_VTABLE CMSPCallMultiGraph : public CMSPCallBase { | |
| 37 public: | |
| 38 typedef struct { | |
| 39 CMSPCallMultiGraph *pMSPCall; | |
| 40 ITStream *pITStream; | |
| 41 IMediaEvent *pIMediaEvent; | |
| 42 } MSPSTREAMCONTEXT,*PMSPSTREAMCONTEXT; | |
| 43 typedef struct _THREADPOOLWAITBLOCK { | |
| 44 HANDLE hWaitHandle; | |
| 45 MSPSTREAMCONTEXT *pContext; | |
| 46 WINBOOL operator ==(struct _THREADPOOLWAITBLOCK &t) { return ((hWaitHandle==t.hWaitHandle) && (pContext==t.pContext)); } | |
| 47 } THREADPOOLWAITBLOCK,*PTHREADPOOLWAITBLOCK; | |
| 48 public: | |
| 49 CMSPCallMultiGraph(); | |
| 50 virtual ~CMSPCallMultiGraph(); | |
| 51 STDMETHOD (RemoveStream) (ITStream *ppStream); | |
| 52 HRESULT Init(CMSPAddress *pMSPAddress,MSP_HANDLE htCall,DWORD dwReserved,DWORD dwMediaType); | |
| 53 HRESULT ShutDown(); | |
| 54 static VOID NTAPI DispatchGraphEvent(VOID *pContext,BOOLEAN bFlag); | |
| 55 virtual VOID HandleGraphEvent(MSPSTREAMCONTEXT *pContext); | |
| 56 virtual HRESULT ProcessGraphEvent(ITStream *pITStream,long lEventCode,LONG_PTR lParam1,LONG_PTR lParam2); | |
| 57 protected: | |
| 58 HRESULT RegisterWaitEvent(IMediaEvent *pIMediaEvent,ITStream *pITStream); | |
| 59 HRESULT UnregisterWaitEvent(int index); | |
| 60 virtual HRESULT InternalCreateStream(DWORD dwMediaType,TERMINAL_DIRECTION Direction,ITStream **ppStream); | |
| 61 protected: | |
| 62 CMSPArray <THREADPOOLWAITBLOCK> m_ThreadPoolWaitBlocks; | |
| 63 }; | |
| 64 | |
| 65 struct MULTI_GRAPH_EVENT_DATA { | |
| 66 CMSPCallMultiGraph *pCall; | |
| 67 ITStream *pITStream; | |
| 68 long lEventCode; | |
| 69 LONG_PTR lParam1; | |
| 70 LONG_PTR lParam2; | |
| 71 IMediaEvent *pIMediaEvent; | |
| 72 MULTI_GRAPH_EVENT_DATA() : pIMediaEvent(NULL),pITStream(NULL),lEventCode(0),lParam1(0),lParam2(0) { } | |
| 73 }; | |
| 74 | |
| 75 DWORD WINAPI AsyncMultiGraphEvent(LPVOID pVoid); | |
| 76 #endif |
