winapi_ui_automation/um/
mmeapi.rs

1// Licensed under the Apache License, Version 2.0
2// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
3// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
4// All files in the project carrying such notice may not be copied, modified, or distributed
5// except according to those terms.
6use shared::basetsd::{DWORD_PTR, UINT_PTR};
7use shared::minwindef::{DWORD, LPBYTE, LPDWORD, LPWORD, PDWORD, UINT};
8use um::imm::LPUINT;
9use um::mmsystem::{
10    HMIDI, HMIDIIN, HMIDIOUT, HMIDISTRM, HWAVEIN, HWAVEOUT, LPCWAVEFORMATEX, LPHMIDIIN, LPHMIDIOUT,
11    LPHMIDISTRM, LPHWAVEIN, LPHWAVEOUT, LPMIDIHDR, LPMIDIINCAPSW, LPMIDIOUTCAPSW, LPMMTIME,
12    LPWAVEHDR, LPWAVEINCAPSW, LPWAVEOUTCAPSW, MMRESULT
13};
14use um::winnt::{LPWSTR, PVOID};
15extern "system" {
16    pub fn waveOutGetNumDevs() -> UINT;
17    // pub fn waveOutGetDevCapsA();
18    pub fn waveOutGetDevCapsW(
19        uDeviceID: UINT_PTR,
20        pwoc: LPWAVEOUTCAPSW,
21        cbwoc: UINT,
22    ) -> MMRESULT;
23    pub fn waveOutGetVolume(
24        hwo: HWAVEOUT,
25        pdwVolume: LPDWORD,
26    ) -> MMRESULT;
27    pub fn waveOutSetVolume(
28        hwo: HWAVEOUT,
29        dwVolume: DWORD,
30    ) -> MMRESULT;
31    // pub fn waveOutGetErrorTextA();
32    pub fn waveOutGetErrorTextW(
33        mmrError: MMRESULT,
34        pszText: LPWSTR,
35        cchText: UINT,
36    ) -> MMRESULT;
37    pub fn waveOutOpen(
38        phwo: LPHWAVEOUT,
39        uDeviceID: UINT,
40        pwfx: LPCWAVEFORMATEX,
41        dwCallback: DWORD_PTR,
42        dwInstance: DWORD_PTR,
43        fdwOpen: DWORD,
44    ) -> MMRESULT;
45    pub fn waveOutClose(
46        hwo: HWAVEOUT,
47    ) -> MMRESULT;
48    pub fn waveOutPrepareHeader(
49        hwo: HWAVEOUT,
50        pwh: LPWAVEHDR,
51        cbwh: UINT,
52    ) -> MMRESULT;
53    pub fn waveOutUnprepareHeader(
54        hwo: HWAVEOUT,
55        pwh: LPWAVEHDR,
56        cbwh: UINT,
57    ) -> MMRESULT;
58    pub fn waveOutWrite(
59        hwo: HWAVEOUT,
60        pwh: LPWAVEHDR,
61        cbwh: UINT,
62    ) -> MMRESULT;
63    pub fn waveOutPause(
64        hwo: HWAVEOUT,
65    ) -> MMRESULT;
66    pub fn waveOutRestart(
67        hwo: HWAVEOUT,
68    ) -> MMRESULT;
69    pub fn waveOutReset(
70        hwo: HWAVEOUT,
71    ) -> MMRESULT;
72    pub fn waveOutBreakLoop(
73        hwo: HWAVEOUT,
74    ) -> MMRESULT;
75    pub fn waveOutGetPosition(
76        hwo: HWAVEOUT,
77        pmmt: LPMMTIME,
78        cbmmt: UINT,
79    ) -> MMRESULT;
80    pub fn waveOutGetPitch(
81        hwo: HWAVEOUT,
82        pdwPitch: LPDWORD,
83    ) -> MMRESULT;
84    pub fn waveOutSetPitch(
85        hwo: HWAVEOUT,
86        dwPitch: DWORD,
87    ) -> MMRESULT;
88    pub fn waveOutGetPlaybackRate(
89        hwo: HWAVEOUT,
90        pdwRate: LPDWORD,
91    ) -> MMRESULT;
92    pub fn waveOutSetPlaybackRate(
93        hwo: HWAVEOUT,
94        dwRate: DWORD,
95    ) -> MMRESULT;
96    // pub fn waveOutGetID();
97    pub fn waveOutMessage(
98        hwo: HWAVEOUT,
99        uMsg: UINT,
100        dw1: DWORD_PTR,
101        dw2: DWORD_PTR,
102    ) -> MMRESULT;
103    pub fn waveInGetNumDevs() -> UINT;
104    // pub fn waveInGetDevCapsA();
105    pub fn waveInGetDevCapsW(
106        uDeviceID: UINT_PTR,
107        pwic: LPWAVEINCAPSW,
108        cbwic: UINT,
109    ) -> MMRESULT;
110    // pub fn waveInGetErrorTextA();
111    pub fn waveInGetErrorTextW(
112        mmrError: MMRESULT,
113        pszText: LPWSTR,
114        cchText: UINT,
115    ) -> MMRESULT;
116    pub fn waveInOpen(
117        phwi: LPHWAVEIN,
118        uDeviceID: UINT,
119        pwfx: LPCWAVEFORMATEX,
120        dwCallback: DWORD_PTR,
121        dwInstance: DWORD_PTR,
122        fdwOpen: DWORD,
123    ) -> MMRESULT;
124    pub fn waveInClose(
125        hwi: HWAVEIN,
126    ) -> MMRESULT;
127    pub fn waveInPrepareHeader(
128        hwi: HWAVEIN,
129        pwh: LPWAVEHDR,
130        cbwh: UINT,
131    ) -> MMRESULT;
132    pub fn waveInUnprepareHeader(
133        hwi: HWAVEIN,
134        pwh: LPWAVEHDR,
135        cbwh: UINT,
136    ) -> MMRESULT;
137    pub fn waveInAddBuffer(
138        hwi: HWAVEIN,
139        pwh: LPWAVEHDR,
140        cbwh: UINT,
141    ) -> MMRESULT;
142    pub fn waveInStart(
143        hwi: HWAVEIN,
144    ) -> MMRESULT;
145    pub fn waveInStop(
146        hwi: HWAVEIN,
147    ) -> MMRESULT;
148    pub fn waveInReset(
149        hwi: HWAVEIN,
150    ) -> MMRESULT;
151    pub fn waveInGetPosition(
152        hwi: HWAVEIN,
153        pmmt: LPMMTIME,
154        cbmmt: UINT,
155    ) -> MMRESULT;
156    // pub fn waveInGetID();
157    pub fn waveInMessage(
158        hwi: HWAVEIN,
159        uMsg: UINT,
160        dw1: DWORD_PTR,
161        dw2: DWORD_PTR,
162    ) -> MMRESULT;
163    pub fn midiOutGetNumDevs() -> UINT;
164    pub fn midiStreamOpen(
165        lphStream: LPHMIDISTRM,
166        puDeviceID: LPUINT,
167        cMidi: DWORD,
168        dwCallback: DWORD_PTR,
169        dwInstance: DWORD_PTR,
170        fdwOpen: DWORD,
171    ) -> MMRESULT;
172    pub fn midiStreamClose(
173        hStream: HMIDISTRM,
174    ) -> MMRESULT;
175    pub fn midiStreamProperty(
176        hm: HMIDISTRM,
177        lppropdata: LPBYTE,
178        dwProperty: DWORD,
179    ) -> MMRESULT;
180    pub fn midiStreamPosition(
181        hms: HMIDISTRM,
182        pmmt: LPMMTIME,
183        cbmmt: UINT,
184    ) -> MMRESULT;
185    pub fn midiStreamOut(
186        hMidiStream: HMIDISTRM,
187        lpMidiHdr: LPMIDIHDR,
188        cbMidiHdr: UINT,
189    ) -> MMRESULT;
190    pub fn midiStreamPause(
191        hms: HMIDISTRM,
192    ) -> MMRESULT;
193    pub fn midiStreamRestart(
194        hms: HMIDISTRM,
195    ) -> MMRESULT;
196    pub fn midiStreamStop(
197        hms: HMIDISTRM,
198    ) -> MMRESULT;
199    pub fn midiConnect(
200        hMidi: HMIDI,
201        hmo: HMIDIOUT,
202        pReserved: PVOID,
203    ) -> MMRESULT;
204    pub fn midiDisconnect(
205        hMidi: HMIDI,
206        hmo: HMIDIOUT,
207        pReserved: PVOID,
208    ) -> MMRESULT;
209    pub fn midiOutGetDevCapsW(
210        uDeviceID: UINT_PTR,
211        lpMidiOutCaps: LPMIDIOUTCAPSW,
212        cbMidiOutCaps: UINT,
213    ) -> MMRESULT;
214    pub fn midiOutGetVolume(
215        hmo: HMIDIOUT,
216        lpdwVolume: PDWORD,
217    ) -> MMRESULT;
218    pub fn midiOutSetVolume(
219        hmo: HMIDIOUT,
220        dwVolume: DWORD,
221    ) -> MMRESULT;
222    pub fn midiOutGetErrorTextW(
223        mmrError: MMRESULT,
224        lpText: LPWSTR,
225        cchText: UINT,
226    ) -> MMRESULT;
227    pub fn midiOutOpen(
228        lphmo: LPHMIDIOUT,
229        uDeviceID: UINT,
230        dwCallback: DWORD_PTR,
231        dwCallbackInstance: DWORD_PTR,
232        dwFlags: DWORD,
233    ) -> MMRESULT;
234    pub fn midiOutClose(
235        hmo: HMIDIOUT,
236    ) -> MMRESULT;
237    pub fn midiOutPrepareHeader(
238        hmo: HMIDIOUT,
239        lpMidiOutHdr: LPMIDIHDR,
240        cbMidiOutHdr: UINT,
241    ) -> MMRESULT;
242    pub fn midiOutUnprepareHeader(
243        hmo: HMIDIOUT,
244        lpMidiOutHdr: LPMIDIHDR,
245        cbMidiOutHdr: UINT,
246    ) -> MMRESULT;
247    pub fn midiOutShortMsg(
248        hmo: HMIDIOUT,
249        dwMsg: DWORD,
250    ) -> MMRESULT;
251    pub fn midiOutLongMsg(
252        hmo: HMIDIOUT,
253        lpMidiOutHdr: LPMIDIHDR,
254        cbMidiOutHdr: UINT,
255    ) -> MMRESULT;
256    pub fn midiOutReset(
257        hmo: HMIDIOUT,
258    ) -> MMRESULT;
259    pub fn midiOutCachePatches(
260        hmo: HMIDIOUT,
261        wBank: UINT,
262        lpPatchArray: LPWORD,
263        wFlags: UINT,
264    ) -> MMRESULT;
265    pub fn midiOutCacheDrumPatches(
266        hmo: HMIDIOUT,
267        wPatch: UINT,
268        lpKeyArray: LPWORD,
269        wFlags: UINT,
270    ) -> MMRESULT;
271    pub fn midiOutGetID(
272        hmo: HMIDIOUT,
273        puDeviceID: LPUINT,
274    ) -> MMRESULT;
275    pub fn midiOutMessage(
276        deviceID: HMIDIOUT,
277        msg: UINT,
278        dw1: DWORD_PTR,
279        dw2: DWORD_PTR,
280    ) -> MMRESULT;
281    pub fn midiInGetNumDevs() -> UINT;
282    pub fn midiInGetDevCapsW(
283        uDeviceID: UINT_PTR,
284        lpMidiInCaps: LPMIDIINCAPSW,
285        cbMidiInCaps: UINT,
286    ) -> MMRESULT;
287    pub fn midiInGetErrorTextW(
288        wError: MMRESULT,
289        lpText: LPWSTR,
290        cchText: UINT,
291    ) -> MMRESULT;
292    pub fn midiInOpen(
293        lphMidiIn: LPHMIDIIN,
294        uDeviceID: UINT,
295        dwCallback: DWORD_PTR,
296        dwCallbackInstance: DWORD_PTR,
297        dwFlags: DWORD,
298    ) -> MMRESULT;
299    pub fn midiInClose(
300        hMidiIn: HMIDIIN,
301    ) -> MMRESULT;
302    pub fn midiInPrepareHeader(
303        hMidiIn: HMIDIIN,
304        lpMidiInHdr: LPMIDIHDR,
305        cbMidiInHdr: UINT,
306    ) -> MMRESULT;
307    pub fn midiInUnprepareHeader(
308        hMidiIn: HMIDIIN,
309        lpMidiInHdr: LPMIDIHDR,
310        cbMidiInHdr: UINT,
311    ) -> MMRESULT;
312    pub fn midiInAddBuffer(
313        hMidiIn: HMIDIIN,
314        lpMidiInHdr: LPMIDIHDR,
315        cbMidiInHdr: UINT,
316    ) -> MMRESULT;
317    pub fn midiInStart(
318        hMidiIn: HMIDIIN,
319    ) -> MMRESULT;
320    pub fn midiInStop(
321        hMidiIn: HMIDIIN,
322    ) -> MMRESULT;
323    pub fn midiInReset(
324        hMidiIn: HMIDIIN,
325    ) -> MMRESULT;
326    pub fn midiInGetID(
327        hmi: HMIDIIN,
328        puDeviceID: LPUINT,
329    ) -> MMRESULT;
330    pub fn midiInMessage(
331        deviceID: HMIDIIN,
332        msg: UINT,
333        dw1: DWORD_PTR,
334        dw2: DWORD_PTR,
335    ) -> MMRESULT;
336}