32#define SOUND_MAX_DEVICES 100
33#define SOUND_MAX_DEVICE_NAME 80
39#define IOCTL_SOUND_BASE FILE_DEVICE_SOUND
40#define IOCTL_WAVE_BASE 0x0000
41#define IOCTL_MIDI_BASE 0x0080
42#define IOCTL_AUX_BASE 0x0100
43#define IOCTL_MIX_BASE 0x0180
49#define WAVE_CTL_CODE(subcode, iomethod, access) \
50 CTL_CODE(FILE_DEVICE_SOUND, IOCTL_WAVE_BASE + subcode, iomethod, access)
52#define MIDI_CTL_CODE(subcode, iomethod, access) \
53 CTL_CODE(FILE_DEVICE_SOUND, IOCTL_MIDI_BASE + subcode, iomethod, access)
55#define MIX_CTL_CODE(subcode, iomethod, access) \
56 CTL_CODE(FILE_DEVICE_SOUND, IOCTL_MIX_BASE + subcode, iomethod, access)
58#define AUX_CTL_CODE(subcode, iomethod, access) \
59 CTL_CODE(FILE_DEVICE_SOUND, IOCTL_AUX_BASE + subcode, iomethod, access)
65#define IOCTL_WAVE_QUERY_FORMAT \
66 WAVE_CTL_CODE(0x0001, METHOD_BUFFERED, FILE_READ_ACCESS)
68#define IOCTL_WAVE_SET_FORMAT \
69 WAVE_CTL_CODE(0x0002, METHOD_BUFFERED, FILE_WRITE_ACCESS)
71#define IOCTL_WAVE_GET_CAPABILITIES \
72 WAVE_CTL_CODE(0x0003, METHOD_BUFFERED, FILE_READ_ACCESS)
74#define IOCTL_WAVE_SET_STATE \
75 WAVE_CTL_CODE(0x0004, METHOD_BUFFERED, FILE_WRITE_ACCESS)
77#define IOCTL_WAVE_GET_STATE \
78 WAVE_CTL_CODE(0x0005, METHOD_BUFFERED, FILE_WRITE_ACCESS)
80#define IOCTL_WAVE_GET_POSITION \
81 WAVE_CTL_CODE(0x0006, METHOD_BUFFERED, FILE_WRITE_ACCESS)
83#define IOCTL_WAVE_SET_VOLUME \
84 WAVE_CTL_CODE(0x0007, METHOD_BUFFERED, FILE_READ_ACCESS)
86#define IOCTL_WAVE_GET_VOLUME \
87 WAVE_CTL_CODE(0x0008, METHOD_BUFFERED, FILE_READ_ACCESS)
89#define IOCTL_WAVE_SET_PITCH \
90 WAVE_CTL_CODE(0x0009, METHOD_BUFFERED, FILE_WRITE_ACCESS)
92#define IOCTL_WAVE_GET_PITCH \
93 WAVE_CTL_CODE(0x000A, METHOD_BUFFERED, FILE_WRITE_ACCESS)
95#define IOCTL_WAVE_SET_PLAYBACK_RATE \
96 WAVE_CTL_CODE(0x000B, METHOD_BUFFERED, FILE_WRITE_ACCESS)
98#define IOCTL_WAVE_GET_PLAYBACK_RATE \
99 WAVE_CTL_CODE(0x000C, METHOD_BUFFERED, FILE_WRITE_ACCESS)
101#define IOCTL_WAVE_PLAY \
102 WAVE_CTL_CODE(0x000D, METHOD_IN_DIRECT, FILE_WRITE_ACCESS)
104#define IOCTL_WAVE_RECORD \
105 WAVE_CTL_CODE(0x000E, METHOD_OUT_DIRECT, FILE_WRITE_ACCESS)
107#define IOCTL_WAVE_BREAK_LOOP \
108 WAVE_CTL_CODE(0x000F, METHOD_BUFFERED, FILE_WRITE_ACCESS)
110#define IOCTL_WAVE_SET_LOW_PRIORITY \
111 WAVE_CTL_CODE(0x0010, METHOD_BUFFERED, FILE_WRITE_ACCESS)
115#define IOCTL_WAVE_SET_DEBUG_LEVEL \
116 WAVE_CTL_CODE(0x0040, METHOD_BUFFERED, FILE_READ_ACCESS)
124#define IOCTL_MIDI_GET_CAPABILITIES \
125 MIDI_CTL_CODE(0x0001, METHOD_BUFFERED, FILE_READ_ACCESS)
127#define IOCTL_MIDI_SET_STATE \
128 MIDI_CTL_CODE(0x0002, METHOD_BUFFERED, FILE_WRITE_ACCESS)
130#define IOCTL_MIDI_GET_STATE \
131 MIDI_CTL_CODE(0x0003, METHOD_BUFFERED, FILE_WRITE_ACCESS)
133#define IOCTL_MIDI_SET_VOLUME \
134 MIDI_CTL_CODE(0x0004, METHOD_BUFFERED, FILE_READ_ACCESS)
136#define IOCTL_MIDI_GET_VOLUME \
137 MIDI_CTL_CODE(0x0005, METHOD_BUFFERED, FILE_READ_ACCESS)
139#define IOCTL_MIDI_PLAY \
140 MIDI_CTL_CODE(0x0006, METHOD_NEITHER, FILE_WRITE_ACCESS)
142#define IOCTL_MIDI_RECORD \
143 MIDI_CTL_CODE(0x0007, METHOD_BUFFERED, FILE_WRITE_ACCESS)
145#define IOCTL_MIDI_CACHE_PATCHES \
146 MIDI_CTL_CODE(0x0008, METHOD_BUFFERED, FILE_WRITE_ACCESS)
148#define IOCTL_MIDI_CACHE_DRUM_PATCHES \
149 MIDI_CTL_CODE(0x0009, METHOD_BUFFERED, FILE_WRITE_ACCESS)
153#define IOCTL_MIDI_SET_DEBUG_LEVEL \
154 WAVE_CTL_CODE(0x0040, METHOD_BUFFERED, FILE_READ_ACCESS)
161#define IOCTL_MIX_GET_CONFIGURATION \
162 MIX_CTL_CODE(0x0001, METHOD_BUFFERED, FILE_READ_ACCESS)
164#define IOCTL_MIX_GET_CONTROL_DATA \
165 MIX_CTL_CODE(0x0002, METHOD_BUFFERED, FILE_READ_ACCESS)
167#define IOCTL_MIX_GET_LINE_DATA \
168 MIX_CTL_CODE(0x0003, METHOD_BUFFERED, FILE_READ_ACCESS)
170#define IOCTL_MIX_REQUEST_NOTIFY \
171 MIX_CTL_CODE(0x0004, METHOD_BUFFERED, FILE_READ_ACCESS)
177#define IOCTL_AUX_GET_CAPABILITIES \
178 AUX_CTL_CODE(0x0001, METHOD_BUFFERED, FILE_READ_ACCESS)
180#define IOCTL_AUX_SET_VOLUME \
181 AUX_CTL_CODE(0x0002, METHOD_BUFFERED, FILE_READ_ACCESS)
183#define IOCTL_AUX_GET_VOLUME \
184 AUX_CTL_CODE(0x0003, METHOD_BUFFERED, FILE_READ_ACCESS)
186#define IOCTL_SOUND_GET_CHANGED_VOLUME \
187 AUX_CTL_CODE(0x0004, METHOD_BUFFERED, FILE_READ_ACCESS)
193#define WAVE_DD_MAX_VOLUME 0xFFFFFFFF
209#define WAVE_DD_STOP 0x0001
210#define WAVE_DD_PLAY 0x0002
211#define WAVE_DD_RECORD 0x0003
212#define WAVE_DD_RESET 0x0004
215#define WAVE_DD_IDLE 0x0000
216#define WAVE_DD_STOPPED 0x0001
217#define WAVE_DD_PLAYING 0x0002
218#define WAVE_DD_RECORDING 0x0003
247#define MIDI_DD_STOP 0x0001
248#define MIDI_DD_PLAY 0x0002
249#define MIDI_DD_RECORD 0x0003
250#define MIDI_DD_RESET 0x0004
253#define MIDI_DD_IDLE 0x0000
254#define MIDI_DD_STOPPED 0x0001
255#define MIDI_DD_PLAYING 0x0002
256#define MIDI_DD_RECORDING 0x0003
275#define AUX_DD_MAX_VOLUME 0xFFFFFFFF
struct _MIDI_DD_VOLUME * PMIDI_DD_VOLUME
struct _WAVE_DD_VOLUME WAVE_DD_VOLUME
struct _WAVE_DD_VOLUME * PWAVE_DD_VOLUME
struct _MIDI_DD_CACHE_DRUM_PATCHES * PMIDI_DD_CACHE_DRUM_PATCHES
struct _AUX_DD_VOLUME * PAUX_DD_VOLUME
struct _WAVE_DD_PITCH WAVE_DD_PITCH
struct _MIDI_DD_CACHE_DRUM_PATCHES MIDI_DD_CACHE_DRUM_PATCHES
struct _MIDI_DD_VOLUME MIDI_DD_VOLUME
struct _MIXER_DD_READ_DATA * PMIXER_DD_READ_DATA
struct _MIDI_DD_INPUT_DATA MIDI_DD_INPUT_DATA
struct _MIDI_DD_INPUT_DATA * PMIDI_DD_INPUT_DATA
struct _WAVE_DD_PITCH * PWAVE_DD_PITCH
struct _MIXER_DD_LINE_DATA MIXER_DD_LINE_DATA
struct _MIXER_DD_LINE_DATA * PMIXER_DD_LINE_DATA
struct _AUX_DD_VOLUME AUX_DD_VOLUME
struct _MIDI_DD_CACHE_PATCHES MIDI_DD_CACHE_PATCHES
struct _WAVE_DD_PLAYBACK_RATE * PWAVE_DD_PLAYBACK_RATE
struct _WAVE_DD_PLAYBACK_RATE WAVE_DD_PLAYBACK_RATE
struct _MIDI_DD_CACHE_PATCHES * PMIDI_DD_CACHE_PATCHES
struct _MIXER_DD_READ_DATA MIXER_DD_READ_DATA