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 STDMETHOD_(NTSTATUS
, QueryInterface
)(THIS_
52 STDMETHOD_(ULONG
,AddRef
)(THIS
) PURE
;
53 STDMETHOD_(ULONG
,Release
)(THIS
) PURE
;
55 STDMETHOD_(NTSTATUS
,GetTime
)( THIS_
56 OUT REFERENCE_TIME
* pTime
60 typedef IMasterClock
*PMASTERCLOCK
;
62 /* ===============================================================
67 #define INTERFACE IMXF
70 typedef struct IMXF
*PMXF
;
72 DECLARE_INTERFACE_(IMXF
,IUnknown
)
74 STDMETHOD_(NTSTATUS
, QueryInterface
)(THIS_
78 STDMETHOD_(ULONG
,AddRef
)(THIS
) PURE
;
79 STDMETHOD_(ULONG
,Release
)(THIS
) PURE
;
81 STDMETHOD_(NTSTATUS
,SetState
)(THIS_
84 STDMETHOD_(NTSTATUS
,PutMessage
)
86 IN PDMUS_KERNEL_EVENT pDMKEvt
88 STDMETHOD_(NTSTATUS
,ConnectOutput
)
92 STDMETHOD_(NTSTATUS
,DisconnectOutput
)
98 /* ===============================================================
99 IAllocatorMXF Interface
103 #define INTERFACE IAllocatorMXF
105 struct IAllocatorMXF
;
106 typedef struct IAllocatorMXF
*PAllocatorMXF
;
108 DECLARE_INTERFACE_(IAllocatorMXF
,IMXF
)
110 STDMETHOD_(NTSTATUS
, QueryInterface
)(THIS_
114 STDMETHOD_(ULONG
,AddRef
)(THIS
) PURE
;
115 STDMETHOD_(ULONG
,Release
)(THIS
) PURE
;
117 STDMETHOD_(NTSTATUS
,SetState
)(THIS_
120 STDMETHOD_(NTSTATUS
,PutMessage
)
122 IN PDMUS_KERNEL_EVENT pDMKEvt
124 STDMETHOD_(NTSTATUS
,ConnectOutput
)
128 STDMETHOD_(NTSTATUS
,DisconnectOutput
)
133 STDMETHOD_(NTSTATUS
,GetMessage
)(THIS_
134 OUT PDMUS_KERNEL_EVENT
* ppDMKEvt
137 STDMETHOD_(USHORT
,GetBufferSize
)(THIS
) PURE
;
139 STDMETHOD_(NTSTATUS
,GetBuffer
)(THIS_
143 STDMETHOD_(NTSTATUS
,PutBuffer
)(THIS_
150 #define INTERFACE IPortDMus
152 DEFINE_GUID(IID_IPortDMus
, 0xc096df9c, 0xfb09, 0x11d1, 0x81, 0xb0, 0x00, 0x60, 0x08, 0x33, 0x16, 0xc1);
153 DEFINE_GUID(CLSID_PortDMus
, 0xb7902fe9, 0xfb0a, 0x11d1, 0x81, 0xb0, 0x00, 0x60, 0x08, 0x33, 0x16, 0xc1);
155 DECLARE_INTERFACE_(IPortDMus
, IPort
)
157 STDMETHOD_(NTSTATUS
, QueryInterface
)(THIS_
161 STDMETHOD_(ULONG
,AddRef
)(THIS
) PURE
;
162 STDMETHOD_(ULONG
,Release
)(THIS
) PURE
;
164 STDMETHOD_(NTSTATUS
,Init
)(THIS_
165 IN PDEVICE_OBJECT DeviceObject
,
167 IN PUNKNOWN UnknownMiniport
,
168 IN PUNKNOWN UnknownAdapter OPTIONAL
,
169 IN PRESOURCELIST ResourceList
171 STDMETHOD_(NTSTATUS
,GetDeviceProperty
)(THIS_
172 IN DEVICE_REGISTRY_PROPERTY DeviceProperty
,
173 IN ULONG BufferLength
,
174 OUT PVOID PropertyBuffer
,
175 OUT PULONG ResultLength
177 STDMETHOD_(NTSTATUS
,NewRegistryKey
)(THIS_
178 OUT PREGISTRYKEY
* OutRegistryKey
,
179 IN PUNKNOWN OuterUnknown
,
180 IN ULONG RegistryKeyType
,
181 IN ACCESS_MASK DesiredAccess
,
182 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL
,
183 IN ULONG CreateOptions OPTIONAL
,
184 OUT PULONG Disposition OPTIONAL
186 STDMETHOD_(void,Notify
)(THIS_
187 IN PSERVICEGROUP ServiceGroup OPTIONAL
190 STDMETHOD_(void,RegisterServiceGroup
)(THIS_
191 IN PSERVICEGROUP ServiceGroup
194 typedef IPortDMus
*PPORTDMUS
;
199 #define INTERFACE IMiniportDMus
201 DEFINE_GUID(IID_IMiniportDMus
, 0xc096df9d, 0xfb09, 0x11d1, 0x81, 0xb0, 0x00, 0x60, 0x08, 0x33, 0x16, 0xc1);
202 DECLARE_INTERFACE_(IMiniportDMus
, IMiniport
)
204 STDMETHOD_(NTSTATUS
, QueryInterface
)(THIS_
208 STDMETHOD_(ULONG
,AddRef
)(THIS
) PURE
;
209 STDMETHOD_(ULONG
,Release
)(THIS
) PURE
;
211 STDMETHOD_(NTSTATUS
,GetDescription
)(THIS_
212 OUT PPCFILTER_DESCRIPTOR
* Description
214 STDMETHOD_(NTSTATUS
,DataRangeIntersection
)(THIS_
216 IN PKSDATARANGE DataRange
,
217 IN PKSDATARANGE MatchingDataRange
,
218 IN ULONG OutputBufferLength
,
219 OUT PVOID ResultantFormat OPTIONAL
,
220 OUT PULONG ResultantFormatLength
223 STDMETHOD_(NTSTATUS
,Init
)(THIS_
224 IN PUNKNOWN UnknownAdapter
,
225 IN PRESOURCELIST ResourceList
,
227 OUT PSERVICEGROUP
* ServiceGroup
230 STDMETHOD_(void,Service
)(THIS
) PURE
;
232 STDMETHOD_(NTSTATUS
,NewStream
)(THIS_
234 IN PUNKNOWN OuterUnknown OPTIONAL
,
235 IN POOL_TYPE PoolType
,
237 IN DMUS_STREAM_TYPE StreamType
,
238 IN PKSDATAFORMAT DataFormat
,
239 OUT PSERVICEGROUP
* ServiceGroup
,
240 IN PAllocatorMXF AllocatorMXF
,
241 IN PMASTERCLOCK MasterClock
,
242 OUT PULONGLONG SchedulePreFetch
246 typedef IMiniportDMus
*PMINIPORTDMUS
;
249 #define STATIC_IID_IAllocatorMXF\
250 0xa5f0d62c, 0xb30f, 0x11d2, 0xb7, 0xa3, 0x00, 0x60, 0x08, 0x33, 0x16, 0xc1
251 DEFINE_GUIDSTRUCT("a5f0d62c-b30f-11d2-b7a3-0060083316c1", IID_IAllocatorMXF
);
252 #define IID_IAllocatorMXF DEFINE_GUIDNAMED(IID_IAllocatorMXF)