4 #define DONT_HOLD_FOR_SEQUENCING 0x8000000000000000
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);
37 DEFINE_GUID(CLSID_MiniportDriverDMusUARTCapture
, 0xD3F0CE1D, 0xFFFC, 0x11D1, 0x81, 0xB0, 0x00, 0x60, 0x08, 0x33, 0x16, 0xC1);
39 /* ===============================================================
40 IMasterClock Interface
44 #define INTERFACE IMasterClock
46 DECLARE_INTERFACE_(IMasterClock
,IUnknown
)
48 DEFINE_ABSTRACT_UNKNOWN()
50 STDMETHOD_(NTSTATUS
,GetTime
)( THIS_
51 OUT REFERENCE_TIME
* pTime
55 typedef IMasterClock
*PMASTERCLOCK
;
57 #define IMP_IMasterClock \
58 STDMETHODIMP_(NTSTATUS) GetTime( \
59 OUT REFERENCE_TIME * pTime \
62 /* ===============================================================
67 #define INTERFACE IMXF
70 typedef struct IMXF
*PMXF
;
72 #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()
115 /* ===============================================================
116 IAllocatorMXF Interface
120 #define INTERFACE IAllocatorMXF
122 struct IAllocatorMXF
;
123 typedef struct IAllocatorMXF
*PAllocatorMXF
;
125 #define STATIC_IID_IAllocatorMXF\
126 0xa5f0d62c, 0xb30f, 0x11d2, 0xb7, 0xa3, 0x00, 0x60, 0x08, 0x33, 0x16, 0xc1
127 DEFINE_GUIDSTRUCT("a5f0d62c-b30f-11d2-b7a3-0060083316c1", IID_IAllocatorMXF
);
128 #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_
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( \
169 #define INTERFACE IPortDMus
171 DEFINE_GUID(IID_IPortDMus
, 0xc096df9c, 0xfb09, 0x11d1, 0x81, 0xb0, 0x00, 0x60, 0x08, 0x33, 0x16, 0xc1);
172 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
188 typedef IPortDMus
*PPORTDMUS
;
190 #define IMP_IPortDMus \
192 STDMETHODIMP_(void) Notify( \
193 IN PSERVICEGROUP ServiceGroup OPTIONAL \
196 STDMETHODIMP_(void) RegisterServiceGroup( \
197 IN PSERVICEGROUP ServiceGroup \
201 #define INTERFACE IMiniportDMus
203 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
234 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 \