7
7
typedef LONGLONG REFERENCE_TIME;
10
typedef struct _DMUS_KERNEL_EVENT
15
USHORT usChannelGroup;
17
REFERENCE_TIME ullPresTime100ns;
18
ULONGLONG ullBytePosition;
19
struct _DMUS_KERNEL_EVENT *pNextEvt;
22
BYTE abData[sizeof(PBYTE)];
24
struct _DMUS_KERNEL_EVENT *pPackageEvt;
26
}DMUS_KERNEL_EVENT, *PDMUS_KERNEL_EVENT;
30
DMUS_STREAM_MIDI_INVALID = -1,
31
DMUS_STREAM_MIDI_RENDER = 0,
32
DMUS_STREAM_MIDI_CAPTURE,
36
DEFINE_GUID(CLSID_MiniportDriverDMusUART, 0xd3f0ce1c, 0xFFFC, 0x11D1, 0x81, 0xB0, 0x00, 0x60, 0x08, 0x33, 0x16, 0xC1);
10
typedef struct _DMUS_KERNEL_EVENT {
14
USHORT usChannelGroup;
16
REFERENCE_TIME ullPresTime100ns;
17
ULONGLONG ullBytePosition;
18
struct _DMUS_KERNEL_EVENT *pNextEvt;
20
BYTE abData[sizeof(PBYTE)];
22
struct _DMUS_KERNEL_EVENT *pPackageEvt;
24
} DMUS_KERNEL_EVENT, *PDMUS_KERNEL_EVENT;
27
DMUS_STREAM_MIDI_INVALID = -1,
28
DMUS_STREAM_MIDI_RENDER = 0,
29
DMUS_STREAM_MIDI_CAPTURE,
33
DEFINE_GUID(CLSID_MiniportDriverDMusUART, 0xd3f0ce1c, 0xFFFC, 0x11D1, 0x81, 0xB0, 0x00, 0x60, 0x08, 0x33, 0x16, 0xC1);
37
34
DEFINE_GUID(CLSID_MiniportDriverDMusUARTCapture, 0xD3F0CE1D, 0xFFFC, 0x11D1, 0x81, 0xB0, 0x00, 0x60, 0x08, 0x33, 0x16, 0xC1);
39
36
/* ===============================================================
70
66
typedef struct IMXF *PMXF;
72
68
#define DEFINE_ABSTRACT_IMXF() \
73
STDMETHOD_(NTSTATUS,SetState)(THIS_ \
76
STDMETHOD_(NTSTATUS,PutMessage) \
78
IN PDMUS_KERNEL_EVENT pDMKEvt \
80
STDMETHOD_(NTSTATUS,ConnectOutput) \
84
STDMETHOD_(NTSTATUS,DisconnectOutput) \
90
STDMETHODIMP_(NTSTATUS) SetState \
94
STDMETHODIMP_(NTSTATUS) PutMessage \
96
IN PDMUS_KERNEL_EVENT pDMKEvt \
98
STDMETHODIMP_(NTSTATUS) ConnectOutput \
102
STDMETHODIMP_(NTSTATUS) DisconnectOutput \
108
DECLARE_INTERFACE_(IMXF,IUnknown)
110
DEFINE_ABSTRACT_UNKNOWN()
112
DEFINE_ABSTRACT_IMXF()
69
STDMETHOD_(NTSTATUS,SetState)(THIS_ \
72
STDMETHOD_(NTSTATUS,PutMessage)(THIS_ \
73
IN PDMUS_KERNEL_EVENT pDMKEvt \
75
STDMETHOD_(NTSTATUS,ConnectOutput)(THIS_ \
78
STDMETHOD_(NTSTATUS,DisconnectOutput)(THIS_ \
83
STDMETHODIMP_(NTSTATUS) SetState ( \
85
STDMETHODIMP_(NTSTATUS) PutMessage (THIS_ \
86
IN PDMUS_KERNEL_EVENT pDMKEvt); \
87
STDMETHODIMP_(NTSTATUS) ConnectOutput (THIS_ \
89
STDMETHODIMP_(NTSTATUS) DisconnectOutput (THIS_ \
92
DECLARE_INTERFACE_(IMXF,IUnknown) {
93
DEFINE_ABSTRACT_UNKNOWN()
94
DEFINE_ABSTRACT_IMXF()
115
97
/* ===============================================================
123
105
typedef struct IAllocatorMXF *PAllocatorMXF;
125
107
#define STATIC_IID_IAllocatorMXF\
126
0xa5f0d62c, 0xb30f, 0x11d2, 0xb7, 0xa3, 0x00, 0x60, 0x08, 0x33, 0x16, 0xc1
108
0xa5f0d62c, 0xb30f, 0x11d2, 0xb7, 0xa3, 0x00, 0x60, 0x08, 0x33, 0x16, 0xc1
127
109
DEFINE_GUIDSTRUCT("a5f0d62c-b30f-11d2-b7a3-0060083316c1", IID_IAllocatorMXF);
128
110
#define IID_IAllocatorMXF DEFINE_GUIDNAMED(IID_IAllocatorMXF)
131
DECLARE_INTERFACE_(IAllocatorMXF, IMXF)
133
DEFINE_ABSTRACT_UNKNOWN()
135
DEFINE_ABSTRACT_IMXF()
137
STDMETHOD_(NTSTATUS,GetMessage)(THIS_
138
OUT PDMUS_KERNEL_EVENT * ppDMKEvt
141
STDMETHOD_(USHORT,GetBufferSize)(THIS) PURE;
143
STDMETHOD_(NTSTATUS,GetBuffer)(THIS_
147
STDMETHOD_(NTSTATUS,PutBuffer)(THIS_
113
DECLARE_INTERFACE_(IAllocatorMXF, IMXF) {
114
DEFINE_ABSTRACT_UNKNOWN()
116
DEFINE_ABSTRACT_IMXF()
118
STDMETHOD_(NTSTATUS,GetMessage)(THIS_
119
OUT PDMUS_KERNEL_EVENT *ppDMKEvt
122
STDMETHOD_(USHORT,GetBufferSize)(THIS) PURE;
124
STDMETHOD_(NTSTATUS,GetBuffer)(THIS_
128
STDMETHOD_(NTSTATUS,PutBuffer)(THIS_
152
#define IMP_IAllocatorMXF \
154
STDMETHODIMP_(NTSTATUS) GetMessage( \
155
OUT PDMUS_KERNEL_EVENT * ppDMKEvt \
158
STDMETHODIMP_(USHORT) GetBufferSize(void); \
160
STDMETHODIMP_(NTSTATUS) GetBuffer( \
161
OUT PBYTE * ppBuffer \
164
STDMETHODIMP_(NTSTATUS) PutBuffer( \
133
#define IMP_IAllocatorMXF \
135
STDMETHODIMP_(NTSTATUS) GetMessage( \
136
OUT PDMUS_KERNEL_EVENT *ppDMKEvt); \
138
STDMETHODIMP_(USHORT) GetBufferSize(void); \
140
STDMETHODIMP_(NTSTATUS) GetBuffer( \
141
OUT PBYTE *ppBuffer); \
143
STDMETHODIMP_(NTSTATUS) PutBuffer( \
169
147
#define INTERFACE IPortDMus
171
149
DEFINE_GUID(IID_IPortDMus, 0xc096df9c, 0xfb09, 0x11d1, 0x81, 0xb0, 0x00, 0x60, 0x08, 0x33, 0x16, 0xc1);
172
150
DEFINE_GUID(CLSID_PortDMus, 0xb7902fe9, 0xfb0a, 0x11d1, 0x81, 0xb0, 0x00, 0x60, 0x08, 0x33, 0x16, 0xc1);
174
DECLARE_INTERFACE_(IPortDMus, IPort)
176
DEFINE_ABSTRACT_UNKNOWN()
178
DEFINE_ABSTRACT_PORT()
180
STDMETHOD_(void,Notify)(THIS_
181
IN PSERVICEGROUP ServiceGroup OPTIONAL
184
STDMETHOD_(void,RegisterServiceGroup)(THIS_
185
IN PSERVICEGROUP ServiceGroup
152
DECLARE_INTERFACE_(IPortDMus, IPort) {
153
DEFINE_ABSTRACT_UNKNOWN()
155
DEFINE_ABSTRACT_PORT()
157
STDMETHOD_(void,Notify)(THIS_
158
IN PSERVICEGROUP ServiceGroup OPTIONAL
161
STDMETHOD_(void,RegisterServiceGroup)(THIS_
162
IN PSERVICEGROUP ServiceGroup
188
165
typedef IPortDMus *PPORTDMUS;
190
#define IMP_IPortDMus \
192
STDMETHODIMP_(void) Notify( \
193
IN PSERVICEGROUP ServiceGroup OPTIONAL \
196
STDMETHODIMP_(void) RegisterServiceGroup( \
197
IN PSERVICEGROUP ServiceGroup \
167
#define IMP_IPortDMus \
169
STDMETHODIMP_(void) Notify( \
170
IN PSERVICEGROUP ServiceGroup OPTIONAL); \
172
STDMETHODIMP_(void) RegisterServiceGroup( \
173
IN PSERVICEGROUP ServiceGroup)
201
176
#define INTERFACE IMiniportDMus
203
178
DEFINE_GUID(IID_IMiniportDMus, 0xc096df9d, 0xfb09, 0x11d1, 0x81, 0xb0, 0x00, 0x60, 0x08, 0x33, 0x16, 0xc1);
204
DECLARE_INTERFACE_(IMiniportDMus, IMiniport)
206
DEFINE_ABSTRACT_UNKNOWN()
208
DEFINE_ABSTRACT_MINIPORT()
211
STDMETHOD_(NTSTATUS,Init)(THIS_
212
IN PUNKNOWN UnknownAdapter,
213
IN PRESOURCELIST ResourceList,
215
OUT PSERVICEGROUP * ServiceGroup
218
STDMETHOD_(void,Service)(THIS) PURE;
220
STDMETHOD_(NTSTATUS,NewStream)(THIS_
222
IN PUNKNOWN OuterUnknown OPTIONAL,
223
IN POOL_TYPE PoolType,
225
IN DMUS_STREAM_TYPE StreamType,
226
IN PKSDATAFORMAT DataFormat,
227
OUT PSERVICEGROUP * ServiceGroup,
228
IN PAllocatorMXF AllocatorMXF,
229
IN PMASTERCLOCK MasterClock,
230
OUT PULONGLONG SchedulePreFetch
180
DECLARE_INTERFACE_(IMiniportDMus, IMiniport) {
181
DEFINE_ABSTRACT_UNKNOWN()
183
DEFINE_ABSTRACT_MINIPORT()
185
STDMETHOD_(NTSTATUS,Init)(THIS_
186
IN PUNKNOWN UnknownAdapter,
187
IN PRESOURCELIST ResourceList,
189
OUT PSERVICEGROUP *ServiceGroup
192
STDMETHOD_(void,Service)(THIS) PURE;
194
STDMETHOD_(NTSTATUS,NewStream)(THIS_
196
IN PUNKNOWN OuterUnknown OPTIONAL,
197
IN POOL_TYPE PoolType,
199
IN DMUS_STREAM_TYPE StreamType,
200
IN PKSDATAFORMAT DataFormat,
201
OUT PSERVICEGROUP *ServiceGroup,
202
IN PAllocatorMXF AllocatorMXF,
203
IN PMASTERCLOCK MasterClock,
204
OUT PULONGLONG SchedulePreFetch
234
208
typedef IMiniportDMus *PMINIPORTDMUS;
237
#define IMP_IMiniportDMus \
239
STDMETHODIMP_(NTSTATUS) Init( \
240
IN PUNKNOWN UnknownAdapter, \
241
IN PRESOURCELIST ResourceList, \
243
OUT PSERVICEGROUP * ServiceGroup \
246
STDMETHODIMP_(void) Service(THIS); \
248
STDMETHODIMP_(NTSTATUS) NewStream( \
250
IN PUNKNOWN OuterUnknown, \
251
IN POOL_TYPE PoolType, \
253
IN DMUS_STREAM_TYPE StreamType, \
254
IN PKSDATAFORMAT DataFormat, \
255
OUT PSERVICEGROUP * ServiceGroup, \
256
IN PAllocatorMXF AllocatorMXF, \
257
IN PMASTERCLOCK MasterClock, \
258
OUT PULONGLONG SchedulePreFetch \
211
#define IMP_IMiniportDMus \
213
STDMETHODIMP_(NTSTATUS) Init( \
214
IN PUNKNOWN UnknownAdapter, \
215
IN PRESOURCELIST ResourceList, \
217
OUT PSERVICEGROUP *ServiceGroup); \
219
STDMETHODIMP_(void) Service(THIS); \
221
STDMETHODIMP_(NTSTATUS) NewStream( \
223
IN PUNKNOWN OuterUnknown, \
224
IN POOL_TYPE PoolType, \
226
IN DMUS_STREAM_TYPE StreamType, \
227
IN PKSDATAFORMAT DataFormat, \
228
OUT PSERVICEGROUP *ServiceGroup, \
229
IN PAllocatorMXF AllocatorMXF, \
230
IN PMASTERCLOCK MasterClock, \
231
OUT PULONGLONG SchedulePreFetch)
233
#endif /* _DMUSICKS_ */