ViewVC Help
View File | Revision Log | View Changeset | Root Listing
root/Oni2/Daodan/MSYS2/mingw32/i686-w64-mingw32/include/ddk/dmusicks.h
Revision: 1166
Committed: Tue Oct 26 14:22:36 2021 UTC (4 years ago) by rossy
Content type: text/x-chdr
File size: 8502 byte(s)
Log Message:
Daodan: Replace MinGW build env with an up-to-date MSYS2 env

File Contents

# Content
1 #ifndef _DMUSICKS_
2 #define _DMUSICKS_
3
4 #define DONT_HOLD_FOR_SEQUENCING 0x8000000000000000
5
6 #ifndef REFERENCE_TIME
7 typedef LONGLONG REFERENCE_TIME;
8 #endif
9
10 typedef 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
26 typedef 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
33 DEFINE_GUID(CLSID_MiniportDriverDMusUART, 0xd3f0ce1c, 0xFFFC, 0x11D1, 0x81, 0xB0, 0x00, 0x60, 0x08, 0x33, 0x16, 0xC1);
34 DEFINE_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
43 DECLARE_INTERFACE_(IMasterClock,IUnknown)
44 {
45 DEFINE_ABSTRACT_UNKNOWN()
46
47 STDMETHOD_(NTSTATUS,GetTime)( THIS_
48 OUT REFERENCE_TIME * pTime
49 ) PURE;
50 };
51
52 typedef 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
66 struct IMXF;
67 typedef 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
105 DECLARE_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
119 struct IAllocatorMXF;
120 typedef struct IAllocatorMXF *PAllocatorMXF;
121
122 #define STATIC_IID_IAllocatorMXF\
123 0xa5f0d62c, 0xb30f, 0x11d2, 0xb7, 0xa3, 0x00, 0x60, 0x08, 0x33, 0x16, 0xc1
124 DEFINE_GUIDSTRUCT("a5f0d62c-b30f-11d2-b7a3-0060083316c1", IID_IAllocatorMXF);
125 #define IID_IAllocatorMXF DEFINE_GUIDNAMED(IID_IAllocatorMXF)
126
127
128 DECLARE_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
168 DEFINE_GUID(IID_IPortDMus, 0xc096df9c, 0xfb09, 0x11d1, 0x81, 0xb0, 0x00, 0x60, 0x08, 0x33, 0x16, 0xc1);
169 DEFINE_GUID(CLSID_PortDMus, 0xb7902fe9, 0xfb0a, 0x11d1, 0x81, 0xb0, 0x00, 0x60, 0x08, 0x33, 0x16, 0xc1);
170
171 DECLARE_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 };
185 typedef 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
200 DEFINE_GUID(IID_IMiniportDMus, 0xc096df9d, 0xfb09, 0x11d1, 0x81, 0xb0, 0x00, 0x60, 0x08, 0x33, 0x16, 0xc1);
201 DECLARE_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
230 typedef 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