3 #include <pseh/pseh2.h>
17 #include "interface.h"
24 }WDMAUD_COMPLETION_CONTEXT
, *PWDMAUD_COMPLETION_CONTEXT
;
30 SOUND_DEVICE_TYPE Type
;
34 }WDMAUD_HANDLE
, *PWDMAUD_HANDLE
;
41 WDMAUD_HANDLE
* hPins
;
43 LIST_ENTRY MixerEventList
;
44 }WDMAUD_CLIENT
, *PWDMAUD_CLIENT
;
49 ULONG NotificationType
;
52 }EVENT_ENTRY
, *PEVENT_ENTRY
;
57 UNICODE_STRING SymbolicLink
;
58 }SYSAUDIO_ENTRY
, *PSYSAUDIO_ENTRY
;
62 KSDEVICE_HEADER DeviceHeader
;
63 PVOID SysAudioNotification
;
65 BOOL DeviceInterfaceSupport
;
68 ULONG NumSysAudioDevices
;
69 LIST_ENTRY SysAudioDeviceList
;
71 PFILE_OBJECT FileObject
;
73 LIST_ENTRY WdmAudClientList
;
74 }WDMAUD_DEVICE_EXTENSION
, *PWDMAUD_DEVICE_EXTENSION
;
78 PWDMAUD_CLIENT ClientInfo
;
79 PWDMAUD_DEVICE_EXTENSION DeviceExtension
;
80 SOUND_DEVICE_TYPE DeviceType
;
81 }PIN_CREATE_CONTEXT
, *PPIN_CREATE_CONTEXT
;
87 IN PWDMAUD_DEVICE_EXTENSION DeviceExtension
,
90 IN LPWAVEFORMATEX WaveFormatEx
,
91 IN ACCESS_MASK DesiredAccess
,
92 OUT PHANDLE PinHandle
);
95 WdmAudRegisterDeviceInterface(
96 IN PDEVICE_OBJECT PhysicalDeviceObject
,
97 IN PWDMAUD_DEVICE_EXTENSION DeviceExtension
);
100 WdmAudOpenSysAudioDevices(
101 IN PDEVICE_OBJECT DeviceObject
,
102 IN PWDMAUD_DEVICE_EXTENSION DeviceExtension
);
106 IN PDEVICE_OBJECT DeviceObject
,
107 IN PWDMAUD_CLIENT
*pClient
);
112 IN PDEVICE_OBJECT DeviceObject
,
118 IN PDEVICE_OBJECT DeviceObject
,
124 IN PDEVICE_OBJECT DeviceObject
,
128 WdmAudControlOpenMixer(
129 IN PDEVICE_OBJECT DeviceObject
,
131 IN PWDMAUD_DEVICE_INFO DeviceInfo
,
132 IN PWDMAUD_CLIENT ClientInfo
);
135 WdmAudControlOpenWave(
136 IN PDEVICE_OBJECT DeviceObject
,
138 IN PWDMAUD_DEVICE_INFO DeviceInfo
,
139 IN PWDMAUD_CLIENT ClientInfo
);
142 WdmAudControlOpenMidi(
143 IN PDEVICE_OBJECT DeviceObject
,
145 IN PWDMAUD_DEVICE_INFO DeviceInfo
,
146 IN PWDMAUD_CLIENT ClientInfo
);
149 GetNumOfMixerDevices(
150 IN PDEVICE_OBJECT DeviceObject
);
159 WdmAudOpenSysAudioDevice(
160 IN LPWSTR DeviceName
,
166 IN ULONG ProductNameSize
,
167 OUT LPWSTR ProductName
);
170 WdmAudMixerCapabilities(
171 IN PDEVICE_OBJECT DeviceObject
,
172 IN PWDMAUD_DEVICE_INFO DeviceInfo
,
173 IN PWDMAUD_CLIENT ClientInfo
,
174 IN PWDMAUD_DEVICE_EXTENSION DeviceExtension
);
177 WdmAudWaveCapabilities(
178 IN PDEVICE_OBJECT DeviceObject
,
179 IN PWDMAUD_DEVICE_INFO DeviceInfo
,
180 IN PWDMAUD_CLIENT ClientInfo
,
181 IN PWDMAUD_DEVICE_EXTENSION DeviceExtension
);
184 WdmAudMidiCapabilities(
185 IN PDEVICE_OBJECT DeviceObject
,
186 IN PWDMAUD_DEVICE_INFO DeviceInfo
,
187 IN PWDMAUD_CLIENT ClientInfo
,
188 IN PWDMAUD_DEVICE_EXTENSION DeviceExtension
);
193 IN PDEVICE_OBJECT DeviceObject
,
195 IN PWDMAUD_DEVICE_INFO DeviceInfo
,
196 IN PWDMAUD_CLIENT ClientInfo
);
201 IN PDEVICE_OBJECT DeviceObject
,
203 IN PWDMAUD_DEVICE_INFO DeviceInfo
,
204 IN PWDMAUD_CLIENT ClientInfo
);
208 WdmAudGetLineControls(
209 IN PDEVICE_OBJECT DeviceObject
,
211 IN PWDMAUD_DEVICE_INFO DeviceInfo
,
212 IN PWDMAUD_CLIENT ClientInfo
);
216 WdmAudSetControlDetails(
217 IN PDEVICE_OBJECT DeviceObject
,
219 IN PWDMAUD_DEVICE_INFO DeviceInfo
,
220 IN PWDMAUD_CLIENT ClientInfo
);
225 IN PDEVICE_OBJECT DeviceObject
,
227 IN PWDMAUD_DEVICE_INFO DeviceInfo
,
228 IN PWDMAUD_CLIENT ClientInfo
);
232 WdmAudGetControlDetails(
233 IN PDEVICE_OBJECT DeviceObject
,
235 IN PWDMAUD_DEVICE_INFO DeviceInfo
,
236 IN PWDMAUD_CLIENT ClientInfo
);
239 WdmAudMixerInitialize(
240 IN PDEVICE_OBJECT DeviceObject
);
244 WdmAudWaveInitialize(
245 IN PDEVICE_OBJECT DeviceObject
);
249 IN PWDMAUD_CLIENT ClientInfo
,
252 IN SOUND_DEVICE_TYPE DeviceType
);
256 IN PWDMAUD_CLIENT ClientInfo
,
259 IN SOUND_DEVICE_TYPE DeviceType
,
264 GetSysAudioDevicePnpName(
265 IN PDEVICE_OBJECT DeviceObject
,
266 IN ULONG DeviceIndex
,
267 OUT LPWSTR
* Device
);
270 OpenSysAudioDeviceByIndex(
271 IN PDEVICE_OBJECT DeviceObject
,
272 IN ULONG DeviceIndex
,
273 IN PHANDLE DeviceHandle
,
274 IN PFILE_OBJECT
* FileObject
);
279 OUT PHANDLE DeviceHandle
,
280 OUT PFILE_OBJECT
* FileObject
);
283 WdmAudGetMixerDeviceCount(VOID
);
286 WdmAudGetWaveInDeviceCount(VOID
);
289 WdmAudGetWaveOutDeviceCount(VOID
);
292 WdmAudGetMidiInDeviceCount(VOID
);
295 WdmAudGetMidiOutDeviceCount(VOID
);
298 WdmAudGetPnpNameByIndexAndType(
299 IN ULONG DeviceIndex
,
300 IN SOUND_DEVICE_TYPE DeviceType
,
307 GetSysAudioDeviceCount(
308 IN PDEVICE_OBJECT DeviceObject
);
313 IN POOL_TYPE PoolType
,
314 IN SIZE_T NumberOfBytes
);