source: Daodan/MSYS2/mingw32/i686-w64-mingw32/include/ddk/dmusicks.h@ 1194

Last change on this file since 1194 was 1166, checked in by rossy, 3 years ago

Daodan: Replace MinGW build env with an up-to-date MSYS2 env

File size: 8.3 KB
Line 
1#ifndef _DMUSICKS_
2#define _DMUSICKS_
3
4#define DONT_HOLD_FOR_SEQUENCING 0x8000000000000000
5
6#ifndef REFERENCE_TIME
7typedef LONGLONG REFERENCE_TIME;
8#endif
9
10typedef struct _DMUS_KERNEL_EVENT {
11 BYTE bReserved;
12 BYTE cbStruct;
13 USHORT cbEvent;
14 USHORT usChannelGroup;
15 USHORT usFlags;
16 REFERENCE_TIME ullPresTime100ns;
17 ULONGLONG ullBytePosition;
18 struct _DMUS_KERNEL_EVENT *pNextEvt;
19 union {
20 BYTE abData[sizeof(PBYTE)];
21 PBYTE pbData;
22 struct _DMUS_KERNEL_EVENT *pPackageEvt;
23 } uData;
24} DMUS_KERNEL_EVENT, *PDMUS_KERNEL_EVENT;
25
26typedef enum {
27 DMUS_STREAM_MIDI_INVALID = -1,
28 DMUS_STREAM_MIDI_RENDER = 0,
29 DMUS_STREAM_MIDI_CAPTURE,
30 DMUS_STREAM_WAVE_SINK
31} DMUS_STREAM_TYPE;
32
33DEFINE_GUID(CLSID_MiniportDriverDMusUART, 0xd3f0ce1c, 0xFFFC, 0x11D1, 0x81, 0xB0, 0x00, 0x60, 0x08, 0x33, 0x16, 0xC1);
34DEFINE_GUID(CLSID_MiniportDriverDMusUARTCapture, 0xD3F0CE1D, 0xFFFC, 0x11D1, 0x81, 0xB0, 0x00, 0x60, 0x08, 0x33, 0x16, 0xC1);
35
36/* ===============================================================
37 IMasterClock Interface
38*/
39
40#undef INTERFACE
41#define INTERFACE IMasterClock
42
43DECLARE_INTERFACE_(IMasterClock,IUnknown)
44{
45 DEFINE_ABSTRACT_UNKNOWN()
46
47 STDMETHOD_(NTSTATUS,GetTime)( THIS_
48 OUT REFERENCE_TIME * pTime
49 ) PURE;
50};
51
52typedef IMasterClock *PMASTERCLOCK;
53
54#define IMP_IMasterClock \
55 STDMETHODIMP_(NTSTATUS) GetTime( \
56 OUT REFERENCE_TIME * pTime \
57 )
58
59/* ===============================================================
60 IMXF Interface
61*/
62
63#undef INTERFACE
64#define INTERFACE IMXF
65
66struct IMXF;
67typedef struct IMXF *PMXF;
68
69#define DEFINE_ABSTRACT_IMXF() \
70 STDMETHOD_(NTSTATUS,SetState)(THIS_ \
71 IN KSSTATE State \
72 ) PURE; \
73 STDMETHOD_(NTSTATUS,PutMessage) \
74 ( THIS_ \
75 IN PDMUS_KERNEL_EVENT pDMKEvt \
76 ) PURE; \
77 STDMETHOD_(NTSTATUS,ConnectOutput) \
78 ( THIS_ \
79 IN PMXF sinkMXF \
80 ) PURE; \
81 STDMETHOD_(NTSTATUS,DisconnectOutput) \
82 ( THIS_ \
83 IN PMXF sinkMXF \
84 ) PURE;
85
86#define IMP_IMXF \
87 STDMETHODIMP_(NTSTATUS) SetState \
88 ( \
89 IN KSSTATE State \
90 ); \
91 STDMETHODIMP_(NTSTATUS) PutMessage \
92 ( THIS_ \
93 IN PDMUS_KERNEL_EVENT pDMKEvt \
94 ); \
95 STDMETHODIMP_(NTSTATUS) ConnectOutput \
96 ( THIS_ \
97 IN PMXF sinkMXF \
98 ); \
99 STDMETHODIMP_(NTSTATUS) DisconnectOutput \
100 ( THIS_ \
101 IN PMXF sinkMXF \
102 )
103
104
105DECLARE_INTERFACE_(IMXF,IUnknown)
106{
107 DEFINE_ABSTRACT_UNKNOWN()
108
109 DEFINE_ABSTRACT_IMXF()
110};
111
112/* ===============================================================
113 IAllocatorMXF Interface
114*/
115
116#undef INTERFACE
117#define INTERFACE IAllocatorMXF
118
119struct IAllocatorMXF;
120typedef struct IAllocatorMXF *PAllocatorMXF;
121
122#define STATIC_IID_IAllocatorMXF\
123 0xa5f0d62c, 0xb30f, 0x11d2, 0xb7, 0xa3, 0x00, 0x60, 0x08, 0x33, 0x16, 0xc1
124DEFINE_GUIDSTRUCT("a5f0d62c-b30f-11d2-b7a3-0060083316c1", IID_IAllocatorMXF);
125#define IID_IAllocatorMXF DEFINE_GUIDNAMED(IID_IAllocatorMXF)
126
127
128DECLARE_INTERFACE_(IAllocatorMXF, IMXF)
129{
130 DEFINE_ABSTRACT_UNKNOWN()
131
132 DEFINE_ABSTRACT_IMXF()
133
134 STDMETHOD_(NTSTATUS,GetMessage)(THIS_
135 OUT PDMUS_KERNEL_EVENT * ppDMKEvt
136 ) PURE;
137
138 STDMETHOD_(USHORT,GetBufferSize)(THIS) PURE;
139
140 STDMETHOD_(NTSTATUS,GetBuffer)(THIS_
141 OUT PBYTE * ppBuffer
142 )PURE;
143
144 STDMETHOD_(NTSTATUS,PutBuffer)(THIS_
145 IN PBYTE pBuffer
146 ) PURE;
147};
148
149#define IMP_IAllocatorMXF \
150 IMP_IMXF; \
151 STDMETHODIMP_(NTSTATUS) GetMessage( \
152 OUT PDMUS_KERNEL_EVENT * ppDMKEvt \
153 ); \
154 \
155 STDMETHODIMP_(USHORT) GetBufferSize(void); \
156 \
157 STDMETHODIMP_(NTSTATUS) GetBuffer( \
158 OUT PBYTE * ppBuffer \
159 ); \
160 \
161 STDMETHODIMP_(NTSTATUS) PutBuffer( \
162 IN PBYTE pBuffer \
163 )
164
165#undef INTERFACE
166#define INTERFACE IPortDMus
167
168DEFINE_GUID(IID_IPortDMus, 0xc096df9c, 0xfb09, 0x11d1, 0x81, 0xb0, 0x00, 0x60, 0x08, 0x33, 0x16, 0xc1);
169DEFINE_GUID(CLSID_PortDMus, 0xb7902fe9, 0xfb0a, 0x11d1, 0x81, 0xb0, 0x00, 0x60, 0x08, 0x33, 0x16, 0xc1);
170
171DECLARE_INTERFACE_(IPortDMus, IPort)
172{
173 DEFINE_ABSTRACT_UNKNOWN()
174
175 DEFINE_ABSTRACT_PORT()
176
177 STDMETHOD_(void,Notify)(THIS_
178 IN PSERVICEGROUP ServiceGroup OPTIONAL
179 )PURE;
180
181 STDMETHOD_(void,RegisterServiceGroup)(THIS_
182 IN PSERVICEGROUP ServiceGroup
183 ) PURE;
184};
185typedef IPortDMus *PPORTDMUS;
186
187#define IMP_IPortDMus \
188 IMP_IPort; \
189 STDMETHODIMP_(void) Notify( \
190 IN PSERVICEGROUP ServiceGroup OPTIONAL \
191 ); \
192 \
193 STDMETHODIMP_(void) RegisterServiceGroup( \
194 IN PSERVICEGROUP ServiceGroup \
195 )
196
197#undef INTERFACE
198#define INTERFACE IMiniportDMus
199
200DEFINE_GUID(IID_IMiniportDMus, 0xc096df9d, 0xfb09, 0x11d1, 0x81, 0xb0, 0x00, 0x60, 0x08, 0x33, 0x16, 0xc1);
201DECLARE_INTERFACE_(IMiniportDMus, IMiniport)
202{
203 DEFINE_ABSTRACT_UNKNOWN()
204
205 DEFINE_ABSTRACT_MINIPORT()
206
207 STDMETHOD_(NTSTATUS,Init)(THIS_
208 IN PUNKNOWN UnknownAdapter,
209 IN PRESOURCELIST ResourceList,
210 IN PPORTDMUS Port,
211 OUT PSERVICEGROUP * ServiceGroup
212 ) PURE;
213
214 STDMETHOD_(void,Service)(THIS) PURE;
215
216 STDMETHOD_(NTSTATUS,NewStream)(THIS_
217 OUT PMXF * MXF,
218 IN PUNKNOWN OuterUnknown OPTIONAL,
219 IN POOL_TYPE PoolType,
220 IN ULONG PinID,
221 IN DMUS_STREAM_TYPE StreamType,
222 IN PKSDATAFORMAT DataFormat,
223 OUT PSERVICEGROUP * ServiceGroup,
224 IN PAllocatorMXF AllocatorMXF,
225 IN PMASTERCLOCK MasterClock,
226 OUT PULONGLONG SchedulePreFetch
227 ) PURE;
228};
229
230typedef IMiniportDMus *PMINIPORTDMUS;
231#undef INTERFACE
232
233#define IMP_IMiniportDMus \
234 IMP_IMiniport; \
235 STDMETHODIMP_(NTSTATUS) Init( \
236 IN PUNKNOWN UnknownAdapter, \
237 IN PRESOURCELIST ResourceList, \
238 IN PPORTDMUS Port, \
239 OUT PSERVICEGROUP * ServiceGroup \
240 ); \
241 \
242 STDMETHODIMP_(void) Service(THIS); \
243 \
244 STDMETHODIMP_(NTSTATUS) NewStream( \
245 OUT PMXF * MXF, \
246 IN PUNKNOWN OuterUnknown, \
247 IN POOL_TYPE PoolType, \
248 IN ULONG PinID, \
249 IN DMUS_STREAM_TYPE StreamType, \
250 IN PKSDATAFORMAT DataFormat, \
251 OUT PSERVICEGROUP * ServiceGroup, \
252 IN PAllocatorMXF AllocatorMXF, \
253 IN PMASTERCLOCK MasterClock, \
254 OUT PULONGLONG SchedulePreFetch \
255 )
256
257#endif /* _DMUSICKS_ */
258
Note: See TracBrowser for help on using the repository browser.