[ROSTESTS]
[reactos.git] / reactos / dll / win32 / mmdrv / mmioctl.h
1 /*
2 *
3 * COPYRIGHT: See COPYING in the top level directory
4 * PROJECT: ReactOS Multimedia
5 * FILE: dll/win32/mmdrv/mmioctl.h
6 * PURPOSE: Multimedia system NT4 compatibility
7 * PROGRAMMER: Andrew Greenwood
8 * UPDATE HISTORY:
9 * Jan 13, 2007: Split from mmdrv.h
10 */
11
12 #ifndef MMDRV_IOCTLS
13 #define MMDRV_IOCTLS
14
15
16 #include <windows.h>
17 #include <mmsystem.h>
18 #include <mmddk.h>
19 #include <winioctl.h>
20
21
22 /*
23 Base names of the supported devices, as provided by drivers running in
24 kernel mode.
25
26 \Device\WaveIn0 etc.
27 */
28
29 #define WAVE_OUT_DEVICE_NAME L"\\Device\\WaveOut"
30 #define WAVE_IN_DEVICE_NAME L"\\Device\\WaveIn"
31 #define MIDI_OUT_DEVICE_NAME L"\\Device\\MidiOut"
32 #define MIDI_IN_DEVICE_NAME L"\\Device\\MidiIn"
33 #define AUX_DEVICE_NAME L"\\Device\\MMAux"
34
35
36 /*
37 Base IOCTL codes
38 */
39
40 #define IOCTL_SOUND_BASE FILE_DEVICE_SOUND
41 #define IOCTL_WAVE_BASE 0x0000
42 #define IOCTL_MIDI_BASE 0x0080
43 #define IOCTL_AUX_BASE 0x0100
44
45
46 /*
47 Wave IOCTLs
48 */
49
50 #define IOCTL_WAVE_QUERY_FORMAT \
51 CTL_CODE(IOCTL_SOUND_BASE, IOCTL_WAVE_BASE + 0x0001, METHOD_BUFFERED, FILE_READ_ACCESS)
52
53 #define IOCTL_WAVE_SET_FORMAT \
54 CTL_CODE(IOCTL_SOUND_BASE, IOCTL_WAVE_BASE + 0x0002, METHOD_BUFFERED, FILE_WRITE_ACCESS)
55
56 #define IOCTL_WAVE_GET_CAPABILITIES \
57 CTL_CODE(IOCTL_SOUND_BASE, IOCTL_WAVE_BASE + 0x0003, METHOD_BUFFERED, FILE_READ_ACCESS)
58
59 #define IOCTL_WAVE_SET_STATE \
60 CTL_CODE(IOCTL_SOUND_BASE, IOCTL_WAVE_BASE + 0x0004, METHOD_BUFFERED, FILE_WRITE_ACCESS)
61
62 #define IOCTL_WAVE_GET_STATE \
63 CTL_CODE(IOCTL_SOUND_BASE, IOCTL_WAVE_BASE + 0x0005, METHOD_BUFFERED, FILE_WRITE_ACCESS)
64
65 #define IOCTL_WAVE_GET_POSITION \
66 CTL_CODE(IOCTL_SOUND_BASE, IOCTL_WAVE_BASE + 0x0006, METHOD_BUFFERED, FILE_WRITE_ACCESS)
67
68 #define IOCTL_WAVE_SET_VOLUME \
69 CTL_CODE(IOCTL_SOUND_BASE, IOCTL_WAVE_BASE + 0x0007, METHOD_BUFFERED, FILE_READ_ACCESS)
70
71 #define IOCTL_WAVE_GET_VOLUME \
72 CTL_CODE(IOCTL_SOUND_BASE, IOCTL_WAVE_BASE + 0x0008, METHOD_BUFFERED, FILE_READ_ACCESS)
73
74 #define IOCTL_WAVE_SET_PITCH \
75 CTL_CODE(IOCTL_SOUND_BASE, IOCTL_WAVE_BASE + 0x0009, METHOD_BUFFERED, FILE_WRITE_ACCESS)
76
77 #define IOCTL_WAVE_GET_PITCH \
78 CTL_CODE(IOCTL_SOUND_BASE, IOCTL_WAVE_BASE + 0x000A, METHOD_BUFFERED, FILE_WRITE_ACCESS)
79
80 #define IOCTL_WAVE_SET_PLAYBACK_RATE \
81 CTL_CODE(IOCTL_SOUND_BASE, IOCTL_WAVE_BASE + 0x000B, METHOD_BUFFERED, FILE_WRITE_ACCESS)
82
83 #define IOCTL_WAVE_GET_PLAYBACK_RATE \
84 CTL_CODE(IOCTL_SOUND_BASE, IOCTL_WAVE_BASE + 0x000C, METHOD_BUFFERED, FILE_WRITE_ACCESS)
85
86 #define IOCTL_WAVE_PLAY \
87 CTL_CODE(IOCTL_SOUND_BASE, IOCTL_WAVE_BASE + 0x000D, METHOD_IN_DIRECT, FILE_WRITE_ACCESS)
88
89 #define IOCTL_WAVE_RECORD \
90 CTL_CODE(IOCTL_SOUND_BASE, IOCTL_WAVE_BASE + 0x000E, METHOD_OUT_DIRECT, FILE_WRITE_ACCESS)
91
92 #define IOCTL_WAVE_BREAK_LOOP \
93 CTL_CODE(IOCTL_SOUND_BASE, IOCTL_WAVE_BASE + 0x000F, METHOD_BUFFERED, FILE_WRITE_ACCESS)
94
95 #define IOCTL_WAVE_SET_LOW_PRIORITY \
96 CTL_CODE(IOCTL_SOUND_BASE, IOCTL_WAVE_BASE + 0x0010, METHOD_BUFFERED, FILE_WRITE_ACCESS)
97
98
99 /*
100 MIDI IOCTLs
101 */
102
103 #define IOCTL_MIDI_GET_CAPABILITIES \
104 CTL_CODE(IOCTL_SOUND_BASE, IOCTL_MIDI_BASE + 0x0001, METHOD_BUFFERED, FILE_READ_ACCESS)
105
106 #define IOCTL_MIDI_SET_STATE \
107 CTL_CODE(IOCTL_SOUND_BASE, IOCTL_MIDI_BASE + 0x0002, METHOD_BUFFERED, FILE_WRITE_ACCESS)
108
109 #define IOCTL_MIDI_GET_STATE \
110 CTL_CODE(IOCTL_SOUND_BASE, IOCTL_MIDI_BASE + 0x0003, METHOD_BUFFERED, FILE_WRITE_ACCESS)
111
112 #define IOCTL_MIDI_SET_VOLUME \
113 CTL_CODE(IOCTL_SOUND_BASE, IOCTL_MIDI_BASE + 0x0004, METHOD_BUFFERED, FILE_READ_ACCESS)
114
115 #define IOCTL_MIDI_GET_VOLUME \
116 CTL_CODE(IOCTL_SOUND_BASE, IOCTL_MIDI_BASE + 0x0005, METHOD_BUFFERED, FILE_READ_ACCESS)
117
118 #define IOCTL_MIDI_PLAY \
119 CTL_CODE(IOCTL_SOUND_BASE, IOCTL_MIDI_BASE + 0x0006, METHOD_BUFFERED, FILE_WRITE_ACCESS)
120
121 #define IOCTL_MIDI_RECORD \
122 CTL_CODE(IOCTL_SOUND_BASE, IOCTL_MIDI_BASE + 0x0007, METHOD_BUFFERED, FILE_WRITE_ACCESS)
123
124 #define IOCTL_MIDI_CACHE_PATCHES \
125 CTL_CODE(IOCTL_SOUND_BASE, IOCTL_MIDI_BASE + 0x0008, METHOD_BUFFERED, FILE_WRITE_ACCESS)
126
127 #define IOCTL_MIDI_CACHE_DRUM_PATCHES \
128 CTL_CODE(IOCTL_SOUND_BASE, IOCTL_MIDI_BASE + 0x0009, METHOD_BUFFERED, FILE_WRITE_ACCESS)
129
130
131 /*
132 Aux IOCTLs
133 */
134
135 #define IOCTL_AUX_GET_CAPABILITIES \
136 CTL_CODE(IOCTL_SOUND_BASE, IOCTL_AUX_BASE + 0x0001, METHOD_BUFFERED, FILE_READ_ACCESS)
137
138 #define IOCTL_AUX_SET_VOLUME \
139 CTL_CODE(IOCTL_SOUND_BASE, IOCTL_AUX_BASE + 0x0002, METHOD_BUFFERED, FILE_READ_ACCESS)
140
141 #define IOCTL_AUX_GET_VOLUME \
142 CTL_CODE(IOCTL_SOUND_BASE, IOCTL_AUX_BASE + 0x0003, METHOD_BUFFERED, FILE_READ_ACCESS)
143
144 #define IOCTL_SOUND_GET_CHANGED_VOLUME \
145 CTL_CODE(IOCTL_SOUND_BASE, IOCTL_AUX_BASE + 0x0004, METHOD_BUFFERED, FILE_READ_ACCESS)
146
147 #endif