source: trunk/include/win/mmddk.h@ 10367

Last change on this file since 10367 was 2304, checked in by sandervl, 26 years ago

JW: Updates for winmm + mci dlls

File size: 11.3 KB
Line 
1/* $Id: mmddk.h,v 1.1 2000-01-03 10:24:25 sandervl Exp $ */
2/*****************************************************************************
3 * Copyright 1998, Luiz Otavio L. Zorzella
4 * 1999, Eric Pouech
5 *
6 * File: mmddk.h
7 * Purpose: multimedia declarations (external to WINMM & MMSYSTEM DLLs
8 * for other DLLs (MCI, drivers...))
9 *
10 *****************************************************************************
11 */
12#ifndef __MMDDK_H
13#define __MMDDK_H
14
15#include "mmsystem.h"
16#include "winbase.h"
17
18#define MAX_MIDIINDRV (16)
19/* For now I'm making 16 the maximum number of midi devices one can
20 * have. This should be more than enough for everybody. But as a purist,
21 * I intend to make it unbounded in the future, as soon as I figure
22 * a good way to do so.
23 */
24#define MAX_MIDIOUTDRV (16)
25
26/* ==================================
27 * Multimedia DDK compatible part
28 * ================================== */
29
30#include "pshpack1.h"
31
32#define DRVM_INIT 100
33#define DRVM_EXIT 101
34#define DRVM_DISABLE 102
35#define DRVM_ENABLE 103
36
37/* messages that have IOCTL format
38 * dw1 = NULL or handle
39 * dw2 = NULL or ptr to DRVM_IOCTL_DATA
40 * return is MMRESULT
41 */
42#define DRVM_IOCTL 0x100
43#define DRVM_ADD_THRU (DRVM_IOCTL+1)
44#define DRVM_REMOVE_THRU (DRVM_IOCTL+2)
45#define DRVM_IOCTL_LAST (DRVM_IOCTL+5)
46typedef struct {
47 DWORD dwSize; /* size of this structure */
48 DWORD dwCmd; /* IOCTL command code, 0x80000000 and above reserved for system */
49} DRVM_IOCTL_DATA, *LPDRVM_IOCTL_DATA;
50
51/* command code ranges for dwCmd field of DRVM_IOCTL message
52 * - codes from 0 to 0x7FFFFFFF are user defined
53 * - codes from 0x80000000 to 0xFFFFFFFF are reserved for future definition by microsoft
54 */
55#define DRVM_IOCTL_CMD_USER 0x00000000L
56#define DRVM_IOCTL_CMD_SYSTEM 0x80000000L
57
58#define DRVM_MAPPER 0x2000
59#define DRVM_USER 0x4000
60#define DRVM_MAPPER_STATUS (DRVM_MAPPER+0)
61#define DRVM_MAPPER_RECONFIGURE (DRVM_MAPPER+1)
62
63#define WODM_INIT DRVM_INIT
64#define WODM_GETNUMDEVS 3
65#define WODM_GETDEVCAPS 4
66#define WODM_OPEN 5
67#define WODM_CLOSE 6
68#define WODM_PREPARE 7
69#define WODM_UNPREPARE 8
70#define WODM_WRITE 9
71#define WODM_PAUSE 10
72#define WODM_RESTART 11
73#define WODM_RESET 12
74#define WODM_GETPOS 13
75#define WODM_GETPITCH 14
76#define WODM_SETPITCH 15
77#define WODM_GETVOLUME 16
78#define WODM_SETVOLUME 17
79#define WODM_GETPLAYBACKRATE 18
80#define WODM_SETPLAYBACKRATE 19
81#define WODM_BREAKLOOP 20
82
83#define WODM_MAPPER_STATUS (DRVM_MAPPER_STATUS + 0)
84#define WAVEOUT_MAPPER_STATUS_DEVICE 0
85#define WAVEOUT_MAPPER_STATUS_MAPPED 1
86#define WAVEOUT_MAPPER_STATUS_FORMAT 2
87
88#define WIDM_INIT DRVM_INIT
89#define WIDM_GETNUMDEVS 50
90#define WIDM_GETDEVCAPS 51
91#define WIDM_OPEN 52
92#define WIDM_CLOSE 53
93#define WIDM_PREPARE 54
94#define WIDM_UNPREPARE 55
95#define WIDM_ADDBUFFER 56
96#define WIDM_START 57
97#define WIDM_STOP 58
98#define WIDM_RESET 59
99#define WIDM_GETPOS 60
100
101#define WIDM_MAPPER_STATUS (DRVM_MAPPER_STATUS + 0)
102#define WAVEIN_MAPPER_STATUS_DEVICE 0
103#define WAVEIN_MAPPER_STATUS_MAPPED 1
104#define WAVEIN_MAPPER_STATUS_FORMAT 2
105
106#define MODM_INIT DRVM_INIT
107#define MODM_GETNUMDEVS 1
108#define MODM_GETDEVCAPS 2
109#define MODM_OPEN 3
110#define MODM_CLOSE 4
111#define MODM_PREPARE 5
112#define MODM_UNPREPARE 6
113#define MODM_DATA 7
114#define MODM_LONGDATA 8
115#define MODM_RESET 9
116#define MODM_GETVOLUME 10
117#define MODM_SETVOLUME 11
118#define MODM_CACHEPATCHES 12
119#define MODM_CACHEDRUMPATCHES 13
120
121#define MIDM_INIT DRVM_INIT
122#define MIDM_GETNUMDEVS 53
123#define MIDM_GETDEVCAPS 54
124#define MIDM_OPEN 55
125#define MIDM_CLOSE 56
126#define MIDM_PREPARE 57
127#define MIDM_UNPREPARE 58
128#define MIDM_ADDBUFFER 59
129#define MIDM_START 60
130#define MIDM_STOP 61
131#define MIDM_RESET 62
132
133
134#define AUXM_INIT DRVM_INIT
135#define AUXDM_GETNUMDEVS 3
136#define AUXDM_GETDEVCAPS 4
137#define AUXDM_GETVOLUME 5
138#define AUXDM_SETVOLUME 6
139
140#define MXDM_GETNUMDEVS 1
141#define MXDM_GETDEVCAPS 2
142#define MXDM_OPEN 3
143#define MXDM_CLOSE 4
144#define MXDM_GETLINEINFO 5
145#define MXDM_GETLINECONTROLS 6
146#define MXDM_GETCONTROLDETAILS 7
147#define MXDM_SETCONTROLDETAILS 8
148
149#define MCI_MAX_DEVICE_TYPE_LENGTH 80
150
151#define MCI_FALSE (MCI_STRING_OFFSET + 19)
152#define MCI_TRUE (MCI_STRING_OFFSET + 20)
153
154#define MCI_FORMAT_RETURN_BASE MCI_FORMAT_MILLISECONDS_S
155#define MCI_FORMAT_MILLISECONDS_S (MCI_STRING_OFFSET + 21)
156#define MCI_FORMAT_HMS_S (MCI_STRING_OFFSET + 22)
157#define MCI_FORMAT_MSF_S (MCI_STRING_OFFSET + 23)
158#define MCI_FORMAT_FRAMES_S (MCI_STRING_OFFSET + 24)
159#define MCI_FORMAT_SMPTE_24_S (MCI_STRING_OFFSET + 25)
160#define MCI_FORMAT_SMPTE_25_S (MCI_STRING_OFFSET + 26)
161#define MCI_FORMAT_SMPTE_30_S (MCI_STRING_OFFSET + 27)
162#define MCI_FORMAT_SMPTE_30DROP_S (MCI_STRING_OFFSET + 28)
163#define MCI_FORMAT_BYTES_S (MCI_STRING_OFFSET + 29)
164#define MCI_FORMAT_SAMPLES_S (MCI_STRING_OFFSET + 30)
165#define MCI_FORMAT_TMSF_S (MCI_STRING_OFFSET + 31)
166
167#define MCI_VD_FORMAT_TRACK_S (MCI_VD_OFFSET + 5)
168
169#define WAVE_FORMAT_PCM_S (MCI_WAVE_OFFSET + 0)
170#define WAVE_MAPPER_S (MCI_WAVE_OFFSET + 1)
171
172#define MCI_SEQ_MAPPER_S (MCI_SEQ_OFFSET + 5)
173#define MCI_SEQ_FILE_S (MCI_SEQ_OFFSET + 6)
174#define MCI_SEQ_MIDI_S (MCI_SEQ_OFFSET + 7)
175#define MCI_SEQ_SMPTE_S (MCI_SEQ_OFFSET + 8)
176#define MCI_SEQ_FORMAT_SONGPTR_S (MCI_SEQ_OFFSET + 9)
177#define MCI_SEQ_NONE_S (MCI_SEQ_OFFSET + 10)
178#define MIDIMAPPER_S (MCI_SEQ_OFFSET + 11)
179
180#define MCI_RESOURCE_RETURNED 0x00010000 /* resource ID */
181#define MCI_COLONIZED3_RETURN 0x00020000 /* colonized ID, 3 bytes data */
182#define MCI_COLONIZED4_RETURN 0x00040000 /* colonized ID, 4 bytes data */
183#define MCI_INTEGER_RETURNED 0x00080000 /* integer conversion needed */
184#define MCI_RESOURCE_DRIVER 0x00100000 /* driver owns returned resource */
185
186#define MCI_NO_COMMAND_TABLE 0xFFFF
187
188#define MCI_COMMAND_HEAD 0
189#define MCI_STRING 1
190#define MCI_INTEGER 2
191#define MCI_END_COMMAND 3
192#define MCI_RETURN 4
193#define MCI_FLAG 5
194#define MCI_END_COMMAND_LIST 6
195#define MCI_RECT 7
196#define MCI_CONSTANT 8
197#define MCI_END_CONSTANT 9
198
199#define MAKEMCIRESOURCE(wRet, wRes) MAKELRESULT((wRet), (wRes))
200
201typedef struct {
202 DWORD dwCallback;
203 DWORD dwInstance;
204 HMIDIOUT hMidi;
205 DWORD dwFlags;
206} PORTALLOC16, *LPPORTALLOC16;
207
208typedef struct {
209 DWORD dwCallback;
210 DWORD dwInstance;
211 HMIDIOUT hMidi;
212 DWORD dwFlags;
213} PORTALLOC, *LPPORTALLOC;
214
215typedef struct {
216 HWAVE16 hWave;
217 LPWAVEFORMATEX lpFormat;
218 DWORD dwCallback;
219 DWORD dwInstance;
220 UINT16 uMappedDeviceID;
221 DWORD dnDevNode;
222} WAVEOPENDESC16, *LPWAVEOPENDESC16;
223
224typedef struct {
225 HWAVE hWave;
226 LPWAVEFORMATEX lpFormat;
227 DWORD dwCallback;
228 DWORD dwInstance;
229 UINT uMappedDeviceID;
230 DWORD dnDevNode;
231} WAVEOPENDESC, *LPWAVEOPENDESC;
232
233typedef struct {
234 DWORD dwStreamID;
235 WORD wDeviceID;
236} MIDIOPENSTRMID;
237
238typedef struct {
239 HMIDI16 hMidi;
240 DWORD dwCallback;
241 DWORD dwInstance;
242 UINT16 reserved;
243 DWORD dnDevNode;
244 DWORD cIds;
245 MIDIOPENSTRMID rgIds;
246} MIDIOPENDESC16, *LPMIDIOPENDESC16;
247
248typedef struct {
249 HMIDI hMidi;
250 DWORD dwCallback;
251 DWORD dwInstance;
252 DWORD dnDevNode;
253 DWORD cIds;
254 MIDIOPENSTRMID rgIds;
255} MIDIOPENDESC, *LPMIDIOPENDESC;
256
257#if 0
258typedef struct {
259 UINT16 wDelay;
260 UINT16 wResolution;
261 LPTIMECALLBACK16 lpFunction;
262 DWORD dwUser;
263 UINT16 wFlags;
264} TIMEREVENT, *LPTIMEREVENT;
265#endif
266
267typedef struct tMIXEROPENDESC16
268{
269 HMIXEROBJ16 hmx;
270 LPVOID pReserved0;
271 DWORD dwCallback;
272 DWORD dwInstance;
273} MIXEROPENDESC16, *LPMIXEROPENDESC16;
274
275typedef struct tMIXEROPENDESC
276{
277 HMIXEROBJ hmx;
278 LPVOID pReserved0;
279 DWORD dwCallback;
280 DWORD dwInstance;
281} MIXEROPENDESC, *LPMIXEROPENDESC;
282
283typedef struct {
284 UINT16 wDeviceID; /* device ID */
285 LPSTR lpstrParams; /* parameter string for entry in SYSTEM.INI */
286 UINT16 wCustomCommandTable; /* custom command table (0xFFFF if none)
287 * filled in by the driver */
288 UINT16 wType; /* driver type (filled in by the driver) */
289} MCI_OPEN_DRIVER_PARMS16, *LPMCI_OPEN_DRIVER_PARMS16;
290
291typedef struct {
292 UINT wDeviceID; /* device ID */
293 LPSTR lpstrParams; /* parameter string for entry in SYSTEM.INI */
294 UINT wCustomCommandTable; /* custom command table (0xFFFF if none) * filled in by the driver */
295 UINT wType; /* driver type (filled in by the driver) */
296} MCI_OPEN_DRIVER_PARMSA, *LPMCI_OPEN_DRIVER_PARMSA;
297
298typedef struct {
299 UINT wDeviceID; /* device ID */
300 LPWSTR lpstrParams; /* parameter string for entry in SYSTEM.INI */
301 UINT wCustomCommandTable; /* custom command table (0xFFFF if none) * filled in by the driver */
302 UINT wType; /* driver type (filled in by the driver) */
303} MCI_OPEN_DRIVER_PARMSW, *LPMCI_OPEN_DRIVER_PARMSW;
304DECL_WINELIB_TYPE_AW(MCI_OPEN_DRIVER_PARMS)
305DECL_WINELIB_TYPE_AW(LPMCI_OPEN_DRIVER_PARMS)
306
307DWORD WINAPI mciGetDriverData16(UINT16 uDeviceID);
308DWORD WINAPI mciGetDriverData(UINT uDeviceID);
309
310BOOL16 WINAPI mciSetDriverData16(UINT16 uDeviceID, DWORD dwData);
311BOOL WINAPI mciSetDriverData(UINT uDeviceID, DWORD dwData);
312
313UINT16 WINAPI mciDriverYield16(UINT16 uDeviceID);
314UINT WINAPI mciDriverYield(UINT uDeviceID);
315
316BOOL16 WINAPI mciDriverNotify16(HWND16 hwndCallback, UINT16 uDeviceID,
317 UINT16 uStatus);
318BOOL WINAPI mciDriverNotify(HWND hwndCallback, UINT uDeviceID,
319 UINT uStatus);
320
321UINT16 WINAPI mciLoadCommandResource16(HINSTANCE16 hInstance,
322 LPCSTR lpResName, UINT16 uType);
323UINT WINAPI mciLoadCommandResource(HINSTANCE hInstance,
324 LPCWSTR lpResName, UINT uType);
325
326BOOL16 WINAPI mciFreeCommandResource16(UINT16 uTable);
327BOOL WINAPI mciFreeCommandResource(UINT uTable);
328
329HINSTANCE16 WINAPI mmTaskCreate16(SEGPTR spProc, HINSTANCE16 *lphMmTask, DWORD dwPmt);
330void WINAPI mmTaskBlock16(HINSTANCE16 hInst);
331LRESULT WINAPI mmTaskSignal16(HTASK16 ht);
332void WINAPI mmTaskYield16(void);
333
334LRESULT WINAPI mmThreadCreate16(FARPROC16 fpThreadAddr, LPHANDLE lpHndl,
335 DWORD dwPmt, DWORD dwFlags);
336void WINAPI mmThreadSignal16(HANDLE16 hndl);
337void WINAPI mmThreadBlock16(HANDLE16 hndl);
338HANDLE16 WINAPI mmThreadGetTask16(HANDLE16 hndl);
339BOOL16 WINAPI mmThreadIsValid16(HANDLE16 hndl);
340BOOL16 WINAPI mmThreadIsCurrent16(HANDLE16 hndl);
341
342#define DCB_NULL 0x0000
343#define DCB_WINDOW 0x0001 /* dwCallback is a HWND */
344#define DCB_TASK 0x0002 /* dwCallback is a HTASK */
345#define DCB_FUNCTION 0x0003 /* dwCallback is a FARPROC */
346#define DCB_EVENT 0x0005 /* dwCallback is an EVENT Handler */
347#define DCB_TYPEMASK 0x0007
348#define DCB_NOSWITCH 0x0008 /* don't switch stacks for callback */
349
350BOOL16 WINAPI DriverCallback16(DWORD dwCallBack, UINT16 uFlags, HANDLE16 hDev,
351 WORD wMsg, DWORD dwUser, DWORD dwParam1, DWORD dwParam2);
352BOOL WINAPI DriverCallback(DWORD dwCallBack, UINT uFlags, HANDLE hDev,
353 UINT wMsg, DWORD dwUser, DWORD dwParam1, DWORD dwParam2);
354
355#include "poppack.h"
356
357#endif /* __MMDDK_H */
358
Note: See TracBrowser for help on using the repository browser.