annotate fuhtark_test/include/winapi/mspcall.h @ 1501:f40d9d814c08 default tip

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