1 #include <pseh/pseh2.h>
15 #include "interface.h"
22 }WDMAUD_COMPLETION_CONTEXT
, *PWDMAUD_COMPLETION_CONTEXT
;
28 SOUND_DEVICE_TYPE Type
;
32 }WDMAUD_HANDLE
, *PWDMAUD_HANDLE
;
39 WDMAUD_HANDLE
* hPins
;
41 LIST_ENTRY MixerEventList
;
42 }WDMAUD_CLIENT
, *PWDMAUD_CLIENT
;
47 ULONG NotificationType
;
50 }EVENT_ENTRY
, *PEVENT_ENTRY
;
55 UNICODE_STRING SymbolicLink
;
56 }SYSAUDIO_ENTRY
, *PSYSAUDIO_ENTRY
;
60 KSDEVICE_HEADER DeviceHeader
;
61 PVOID SysAudioNotification
;
63 BOOL DeviceInterfaceSupport
;
66 ULONG NumSysAudioDevices
;
67 LIST_ENTRY SysAudioDeviceList
;
69 PFILE_OBJECT FileObject
;
70 LIST_ENTRY WdmAudClientList
;
72 ULONG SysAudioDeviceCount
;
73 PIO_WORKITEM WorkItem
;
74 KEVENT InitializationCompletionEvent
;
77 }WDMAUD_DEVICE_EXTENSION
, *PWDMAUD_DEVICE_EXTENSION
;
81 PWDMAUD_CLIENT ClientInfo
;
82 PWDMAUD_DEVICE_EXTENSION DeviceExtension
;
83 SOUND_DEVICE_TYPE DeviceType
;
84 }PIN_CREATE_CONTEXT
, *PPIN_CREATE_CONTEXT
;
90 IN PWDMAUD_DEVICE_EXTENSION DeviceExtension
,
93 IN LPWAVEFORMATEX WaveFormatEx
,
94 IN ACCESS_MASK DesiredAccess
,
95 OUT PHANDLE PinHandle
);
98 WdmAudRegisterDeviceInterface(
99 IN PDEVICE_OBJECT PhysicalDeviceObject
,
100 IN PWDMAUD_DEVICE_EXTENSION DeviceExtension
);
103 WdmAudOpenSysAudioDevices(
104 IN PDEVICE_OBJECT DeviceObject
,
105 IN PWDMAUD_DEVICE_EXTENSION DeviceExtension
);
109 IN PDEVICE_OBJECT DeviceObject
,
110 IN PWDMAUD_CLIENT
*pClient
);
115 IN PDEVICE_OBJECT DeviceObject
,
121 IN PDEVICE_OBJECT DeviceObject
,
127 IN PDEVICE_OBJECT DeviceObject
,
131 WdmAudControlOpenMixer(
132 IN PDEVICE_OBJECT DeviceObject
,
134 IN PWDMAUD_DEVICE_INFO DeviceInfo
,
135 IN PWDMAUD_CLIENT ClientInfo
);
138 WdmAudControlOpenWave(
139 IN PDEVICE_OBJECT DeviceObject
,
141 IN PWDMAUD_DEVICE_INFO DeviceInfo
,
142 IN PWDMAUD_CLIENT ClientInfo
);
145 WdmAudControlOpenMidi(
146 IN PDEVICE_OBJECT DeviceObject
,
148 IN PWDMAUD_DEVICE_INFO DeviceInfo
,
149 IN PWDMAUD_CLIENT ClientInfo
);
152 GetNumOfMixerDevices(
153 IN PDEVICE_OBJECT DeviceObject
);
162 WdmAudOpenSysAudioDevice(
163 IN LPWSTR DeviceName
,
169 IN ULONG ProductNameSize
,
170 OUT LPWSTR ProductName
);
173 WdmAudMixerCapabilities(
174 IN PDEVICE_OBJECT DeviceObject
,
175 IN PWDMAUD_DEVICE_INFO DeviceInfo
,
176 IN PWDMAUD_CLIENT ClientInfo
,
177 IN PWDMAUD_DEVICE_EXTENSION DeviceExtension
);
180 WdmAudWaveCapabilities(
181 IN PDEVICE_OBJECT DeviceObject
,
182 IN PWDMAUD_DEVICE_INFO DeviceInfo
,
183 IN PWDMAUD_CLIENT ClientInfo
,
184 IN PWDMAUD_DEVICE_EXTENSION DeviceExtension
);
187 WdmAudMidiCapabilities(
188 IN PDEVICE_OBJECT DeviceObject
,
189 IN PWDMAUD_DEVICE_INFO DeviceInfo
,
190 IN PWDMAUD_CLIENT ClientInfo
,
191 IN PWDMAUD_DEVICE_EXTENSION DeviceExtension
);
196 IN PDEVICE_OBJECT DeviceObject
,
198 IN PWDMAUD_DEVICE_INFO DeviceInfo
,
199 IN PWDMAUD_CLIENT ClientInfo
);
204 IN PDEVICE_OBJECT DeviceObject
,
206 IN PWDMAUD_DEVICE_INFO DeviceInfo
,
207 IN PWDMAUD_CLIENT ClientInfo
);
211 WdmAudGetLineControls(
212 IN PDEVICE_OBJECT DeviceObject
,
214 IN PWDMAUD_DEVICE_INFO DeviceInfo
,
215 IN PWDMAUD_CLIENT ClientInfo
);
219 WdmAudSetControlDetails(
220 IN PDEVICE_OBJECT DeviceObject
,
222 IN PWDMAUD_DEVICE_INFO DeviceInfo
,
223 IN PWDMAUD_CLIENT ClientInfo
);
228 IN PDEVICE_OBJECT DeviceObject
,
230 IN PWDMAUD_DEVICE_INFO DeviceInfo
,
231 IN PWDMAUD_CLIENT ClientInfo
);
235 WdmAudGetControlDetails(
236 IN PDEVICE_OBJECT DeviceObject
,
238 IN PWDMAUD_DEVICE_INFO DeviceInfo
,
239 IN PWDMAUD_CLIENT ClientInfo
);
242 WdmAudMixerInitialize(
243 IN PDEVICE_OBJECT DeviceObject
);
247 WdmAudWaveInitialize(
248 IN PDEVICE_OBJECT DeviceObject
);
252 IN PWDMAUD_CLIENT ClientInfo
,
255 IN SOUND_DEVICE_TYPE DeviceType
);
259 IN PWDMAUD_CLIENT ClientInfo
,
262 IN SOUND_DEVICE_TYPE DeviceType
,
267 GetSysAudioDevicePnpName(
268 IN PDEVICE_OBJECT DeviceObject
,
269 IN ULONG DeviceIndex
,
270 OUT LPWSTR
* Device
);
273 OpenSysAudioDeviceByIndex(
274 IN PDEVICE_OBJECT DeviceObject
,
275 IN ULONG DeviceIndex
,
276 IN PHANDLE DeviceHandle
,
277 IN PFILE_OBJECT
* FileObject
);
282 OUT PHANDLE DeviceHandle
,
283 OUT PFILE_OBJECT
* FileObject
);
286 WdmAudGetMixerDeviceCount(VOID
);
289 WdmAudGetWaveInDeviceCount(VOID
);
292 WdmAudGetWaveOutDeviceCount(VOID
);
295 WdmAudGetMidiInDeviceCount(VOID
);
298 WdmAudGetMidiOutDeviceCount(VOID
);
301 WdmAudGetPnpNameByIndexAndType(
302 IN ULONG DeviceIndex
,
303 IN SOUND_DEVICE_TYPE DeviceType
,
310 GetSysAudioDeviceCount(
311 IN PDEVICE_OBJECT DeviceObject
);
316 IN POOL_TYPE PoolType
,
317 IN SIZE_T NumberOfBytes
);