include: Add STORAGE_HOTPLUG_INFO structure.
[wine.git] / dlls / mmdevapi / mmdevdrv.h
blobdf21859cbadc667e17d406ef3029c09fe5db18ac
1 /*
2 * This library is free software; you can redistribute it and/or
3 * modify it under the terms of the GNU Lesser General Public
4 * License as published by the Free Software Foundation; either
5 * version 2.1 of the License, or (at your option) any later version.
7 * This library is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
10 * Lesser General Public License for more details.
12 * You should have received a copy of the GNU Lesser General Public
13 * License along with this library; if not, write to the Free Software
14 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17 #include <audiopolicy.h>
18 #include <mmdeviceapi.h>
20 #include <wine/list.h>
22 typedef struct audio_client ACImpl;
24 typedef struct audio_session {
25 GUID guid;
26 struct list clients;
28 IMMDevice *device;
30 float master_vol;
31 UINT32 channel_count;
32 float *channel_vols;
33 BOOL mute;
35 struct list entry;
36 } AudioSession;
38 typedef struct audio_session_wrapper {
39 IAudioSessionControl2 IAudioSessionControl2_iface;
40 IChannelAudioVolume IChannelAudioVolume_iface;
41 ISimpleAudioVolume ISimpleAudioVolume_iface;
43 LONG ref;
45 struct audio_client *client;
46 struct audio_session *session;
47 } AudioSessionWrapper;
49 typedef struct session_mgr {
50 IAudioSessionManager2 IAudioSessionManager2_iface;
52 LONG ref;
54 IMMDevice *device;
55 } SessionMgr;
57 struct audio_client {
58 IAudioClient3 IAudioClient3_iface;
59 IAudioRenderClient IAudioRenderClient_iface;
60 IAudioCaptureClient IAudioCaptureClient_iface;
61 IAudioClock IAudioClock_iface;
62 IAudioClock2 IAudioClock2_iface;
63 IAudioStreamVolume IAudioStreamVolume_iface;
65 LONG ref;
67 IMMDevice *parent;
68 IUnknown *marshal;
70 EDataFlow dataflow;
71 float *vols;
72 UINT32 channel_count;
73 stream_handle stream;
75 HANDLE timer_thread;
77 struct audio_session *session;
78 struct audio_session_wrapper *session_wrapper;
80 struct list entry;
82 /* Keep at end */
83 char device_name[0];