4 #define DONT_HOLD_FOR_SEQUENCING 0x8000000000000000
7 typedef LONGLONG REFERENCE_TIME
;
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);
34 DEFINE_GUID(CLSID_MiniportDriverDMusUARTCapture
, 0xD3F0CE1D, 0xFFFC, 0x11D1, 0x81, 0xB0, 0x00, 0x60, 0x08, 0x33, 0x16, 0xC1);
36 /* ===============================================================
37 IMasterClock Interface
41 #define INTERFACE IMasterClock
43 DECLARE_INTERFACE_(IMasterClock
,IUnknown
) {
44 DEFINE_ABSTRACT_UNKNOWN()
46 STDMETHOD_(NTSTATUS
,GetTime
)( THIS_
47 OUT REFERENCE_TIME
*pTime
51 typedef IMasterClock
*PMASTERCLOCK
;
53 #define IMP_IMasterClock \
54 STDMETHODIMP_(NTSTATUS) GetTime( \
55 OUT REFERENCE_TIME *pTime \
58 /* ===============================================================
63 #define INTERFACE IMXF
66 typedef struct IMXF
*PMXF
;
68 #define 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()
97 /* ===============================================================
98 IAllocatorMXF Interface
102 #define INTERFACE IAllocatorMXF
104 struct IAllocatorMXF
;
105 typedef struct IAllocatorMXF
*PAllocatorMXF
;
107 #define STATIC_IID_IAllocatorMXF\
108 0xa5f0d62c, 0xb30f, 0x11d2, 0xb7, 0xa3, 0x00, 0x60, 0x08, 0x33, 0x16, 0xc1
109 DEFINE_GUIDSTRUCT("a5f0d62c-b30f-11d2-b7a3-0060083316c1", IID_IAllocatorMXF
);
110 #define IID_IAllocatorMXF DEFINE_GUIDNAMED(IID_IAllocatorMXF)
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_
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( \
147 #define INTERFACE IPortDMus
149 DEFINE_GUID(IID_IPortDMus
, 0xc096df9c, 0xfb09, 0x11d1, 0x81, 0xb0, 0x00, 0x60, 0x08, 0x33, 0x16, 0xc1);
150 DEFINE_GUID(CLSID_PortDMus
, 0xb7902fe9, 0xfb0a, 0x11d1, 0x81, 0xb0, 0x00, 0x60, 0x08, 0x33, 0x16, 0xc1);
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
165 typedef IPortDMus
*PPORTDMUS
;
167 #define IMP_IPortDMus \
169 STDMETHODIMP_(void) Notify( \
170 IN PSERVICEGROUP ServiceGroup OPTIONAL); \
172 STDMETHODIMP_(void) RegisterServiceGroup( \
173 IN PSERVICEGROUP ServiceGroup)
176 #define INTERFACE IMiniportDMus
178 DEFINE_GUID(IID_IMiniportDMus
, 0xc096df9d, 0xfb09, 0x11d1, 0x81, 0xb0, 0x00, 0x60, 0x08, 0x33, 0x16, 0xc1);
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
208 typedef IMiniportDMus
*PMINIPORTDMUS
;
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_ */