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
;
71 LIST_ENTRY WdmAudClientList
;
72 }WDMAUD_DEVICE_EXTENSION
, *PWDMAUD_DEVICE_EXTENSION
;
76 PWDMAUD_CLIENT ClientInfo
;
77 PWDMAUD_DEVICE_EXTENSION DeviceExtension
;
78 SOUND_DEVICE_TYPE DeviceType
;
79 }PIN_CREATE_CONTEXT
, *PPIN_CREATE_CONTEXT
;
85 IN PWDMAUD_DEVICE_EXTENSION DeviceExtension
,
88 IN LPWAVEFORMATEX WaveFormatEx
,
89 IN ACCESS_MASK DesiredAccess
,
90 OUT PHANDLE PinHandle
);
93 WdmAudRegisterDeviceInterface(
94 IN PDEVICE_OBJECT PhysicalDeviceObject
,
95 IN PWDMAUD_DEVICE_EXTENSION DeviceExtension
);
98 WdmAudOpenSysAudioDevices(
99 IN PDEVICE_OBJECT DeviceObject
,
100 IN PWDMAUD_DEVICE_EXTENSION DeviceExtension
);
104 IN PDEVICE_OBJECT DeviceObject
,
105 IN PWDMAUD_CLIENT
*pClient
);
110 IN PDEVICE_OBJECT DeviceObject
,
116 IN PDEVICE_OBJECT DeviceObject
,
122 IN PDEVICE_OBJECT DeviceObject
,
126 WdmAudControlOpenMixer(
127 IN PDEVICE_OBJECT DeviceObject
,
129 IN PWDMAUD_DEVICE_INFO DeviceInfo
,
130 IN PWDMAUD_CLIENT ClientInfo
);
133 WdmAudControlOpenWave(
134 IN PDEVICE_OBJECT DeviceObject
,
136 IN PWDMAUD_DEVICE_INFO DeviceInfo
,
137 IN PWDMAUD_CLIENT ClientInfo
);
140 WdmAudControlOpenMidi(
141 IN PDEVICE_OBJECT DeviceObject
,
143 IN PWDMAUD_DEVICE_INFO DeviceInfo
,
144 IN PWDMAUD_CLIENT ClientInfo
);
147 GetNumOfMixerDevices(
148 IN PDEVICE_OBJECT DeviceObject
);
157 WdmAudOpenSysAudioDevice(
158 IN LPWSTR DeviceName
,
164 IN ULONG ProductNameSize
,
165 OUT LPWSTR ProductName
);
168 WdmAudMixerCapabilities(
169 IN PDEVICE_OBJECT DeviceObject
,
170 IN PWDMAUD_DEVICE_INFO DeviceInfo
,
171 IN PWDMAUD_CLIENT ClientInfo
,
172 IN PWDMAUD_DEVICE_EXTENSION DeviceExtension
);
175 WdmAudWaveCapabilities(
176 IN PDEVICE_OBJECT DeviceObject
,
177 IN PWDMAUD_DEVICE_INFO DeviceInfo
,
178 IN PWDMAUD_CLIENT ClientInfo
,
179 IN PWDMAUD_DEVICE_EXTENSION DeviceExtension
);
182 WdmAudMidiCapabilities(
183 IN PDEVICE_OBJECT DeviceObject
,
184 IN PWDMAUD_DEVICE_INFO DeviceInfo
,
185 IN PWDMAUD_CLIENT ClientInfo
,
186 IN PWDMAUD_DEVICE_EXTENSION DeviceExtension
);
191 IN PDEVICE_OBJECT DeviceObject
,
193 IN PWDMAUD_DEVICE_INFO DeviceInfo
,
194 IN PWDMAUD_CLIENT ClientInfo
);
199 IN PDEVICE_OBJECT DeviceObject
,
201 IN PWDMAUD_DEVICE_INFO DeviceInfo
,
202 IN PWDMAUD_CLIENT ClientInfo
);
206 WdmAudGetLineControls(
207 IN PDEVICE_OBJECT DeviceObject
,
209 IN PWDMAUD_DEVICE_INFO DeviceInfo
,
210 IN PWDMAUD_CLIENT ClientInfo
);
214 WdmAudSetControlDetails(
215 IN PDEVICE_OBJECT DeviceObject
,
217 IN PWDMAUD_DEVICE_INFO DeviceInfo
,
218 IN PWDMAUD_CLIENT ClientInfo
);
223 IN PDEVICE_OBJECT DeviceObject
,
225 IN PWDMAUD_DEVICE_INFO DeviceInfo
,
226 IN PWDMAUD_CLIENT ClientInfo
);
230 WdmAudGetControlDetails(
231 IN PDEVICE_OBJECT DeviceObject
,
233 IN PWDMAUD_DEVICE_INFO DeviceInfo
,
234 IN PWDMAUD_CLIENT ClientInfo
);
237 WdmAudMixerInitialize(
238 IN PDEVICE_OBJECT DeviceObject
);
242 WdmAudWaveInitialize(
243 IN PDEVICE_OBJECT DeviceObject
);
247 IN PWDMAUD_CLIENT ClientInfo
,
250 IN SOUND_DEVICE_TYPE DeviceType
);
254 IN PWDMAUD_CLIENT ClientInfo
,
257 IN SOUND_DEVICE_TYPE DeviceType
,
262 GetSysAudioDevicePnpName(
263 IN PDEVICE_OBJECT DeviceObject
,
264 IN ULONG DeviceIndex
,
265 OUT LPWSTR
* Device
);
268 OpenSysAudioDeviceByIndex(
269 IN PDEVICE_OBJECT DeviceObject
,
270 IN ULONG DeviceIndex
,
271 IN PHANDLE DeviceHandle
,
272 IN PFILE_OBJECT
* FileObject
);
277 OUT PHANDLE DeviceHandle
,
278 OUT PFILE_OBJECT
* FileObject
);
281 WdmAudGetMixerDeviceCount(VOID
);
284 WdmAudGetWaveInDeviceCount(VOID
);
287 WdmAudGetWaveOutDeviceCount(VOID
);
290 WdmAudGetMidiInDeviceCount(VOID
);
293 WdmAudGetMidiOutDeviceCount(VOID
);
296 WdmAudGetPnpNameByIndexAndType(
297 IN ULONG DeviceIndex
,
298 IN SOUND_DEVICE_TYPE DeviceType
,
305 GetSysAudioDeviceCount(
306 IN PDEVICE_OBJECT DeviceObject
);
311 IN POOL_TYPE PoolType
,
312 IN SIZE_T NumberOfBytes
);