Fixed wrong parameter count for SHChangeNotifyDeregister, SHFreeUnusedLibraries.
[wine] / include / msacm.h
1 /*
2  *      msacm.h   -       Declarations for MSACM
3  */
4
5 #ifndef __WINE_MSACM_H
6 #define __WINE_MSACM_H
7
8 #include "wintypes.h"
9 #include "driver.h"
10 #include "mmsystem.h"
11 #include "mmreg.h"
12
13 /***********************************************************************
14  * Types
15  */
16
17 /* FIXME: Move to wintypes.h */
18 #define DECLARE_HANDLE(a) \
19 typedef HANDLE16 a##16; \
20 typedef HANDLE32 a##32; \
21 typedef a##16 *P##a##16; \
22 typedef a##16 *NP##a##16; \
23 typedef a##16 *LP##a##16; \
24 typedef a##32 *P##a##32;
25
26 DECLARE_HANDLE(HACMDRIVERID);
27 DECLARE_HANDLE(HACMDRIVER);
28 DECLARE_HANDLE(HACMSTREAM);
29 DECLARE_HANDLE(HACMOBJ);
30
31 /* FIXME: Remove when define moved to wintypes.h */
32 #undef DECLARE_HANDLE
33
34 /***********************************************************************
35  * Defines/Enums
36  */
37
38 #define ACMERR_BASE        512
39 #define ACMERR_NOTPOSSIBLE (ACMERR_BASE + 0)
40 #define ACMERR_BUSY        (ACMERR_BASE + 1)
41 #define ACMERR_UNPREPARED  (ACMERR_BASE + 2)
42 #define ACMERR_CANCELED    (ACMERR_BASE + 3)
43
44 #define MM_ACM_OPEN  MM_STREAM_OPEN
45 #define MM_ACM_CLOSE MM_STREAM_CLOSE
46 #define MM_ACM_DONE  MM_STREAM_DONE
47
48 #define ACM_DRIVERADDF_FUNCTION   0x00000003L
49 #define ACM_DRIVERADDF_NOTIFYHWND 0x00000004L
50 #define ACM_DRIVERADDF_TYPEMASK   0x00000007L
51 #define ACM_DRIVERADDF_LOCAL      0x00000000L
52 #define ACM_DRIVERADDF_GLOBAL     0x00000008L
53
54 #define ACMDRIVERDETAILS_SHORTNAME_CHARS  32
55 #define ACMDRIVERDETAILS_LONGNAME_CHARS  128
56 #define ACMDRIVERDETAILS_COPYRIGHT_CHARS  80
57 #define ACMDRIVERDETAILS_LICENSING_CHARS 128
58 #define ACMDRIVERDETAILS_FEATURES_CHARS  512
59
60 #define ACMDRIVERDETAILS_FCCTYPE_AUDIOCODEC mmioFOURCC('a', 'u', 'd', 'c')
61 #define ACMDRIVERDETAILS_FCCCOMP_UNDEFINED  mmioFOURCC('\0', '\0', '\0', '\0')
62
63 #define ACMDRIVERDETAILS_SUPPORTF_CODEC     0x00000001L
64 #define ACMDRIVERDETAILS_SUPPORTF_CONVERTER 0x00000002L
65 #define ACMDRIVERDETAILS_SUPPORTF_FILTER    0x00000004L
66 #define ACMDRIVERDETAILS_SUPPORTF_HARDWARE  0x00000008L
67 #define ACMDRIVERDETAILS_SUPPORTF_ASYNC     0x00000010L
68 #define ACMDRIVERDETAILS_SUPPORTF_LOCAL     0x40000000L
69 #define ACMDRIVERDETAILS_SUPPORTF_DISABLED  0x80000000L
70
71 #define ACM_DRIVERENUMF_NOLOCAL  0x40000000L
72 #define ACM_DRIVERENUMF_DISABLED 0x80000000L
73
74 #define ACM_DRIVERPRIORITYF_ENABLE    0x00000001L
75 #define ACM_DRIVERPRIORITYF_DISABLE   0x00000002L
76 #define ACM_DRIVERPRIORITYF_ABLEMASK  0x00000003L
77 #define ACM_DRIVERPRIORITYF_BEGIN     0x00010000L
78 #define ACM_DRIVERPRIORITYF_END       0x00020000L
79 #define ACM_DRIVERPRIORITYF_DEFERMASK 0x00030000L
80
81 #define MM_ACM_FILTERCHOOSE 0x8000
82
83 #define FILTERCHOOSE_MESSAGE          0
84 #define FILTERCHOOSE_FILTERTAG_VERIFY (FILTERCHOOSE_MESSAGE+0)
85 #define FILTERCHOOSE_FILTER_VERIFY    (FILTERCHOOSE_MESSAGE+1)
86 #define FILTERCHOOSE_CUSTOM_VERIFY    (FILTERCHOOSE_MESSAGE+2)
87
88 #define ACMFILTERCHOOSE_STYLEF_SHOWHELP             0x00000004L
89 #define ACMFILTERCHOOSE_STYLEF_ENABLEHOOK           0x00000008L
90 #define ACMFILTERCHOOSE_STYLEF_ENABLETEMPLATE       0x00000010L
91 #define ACMFILTERCHOOSE_STYLEF_ENABLETEMPLATEHANDLE 0x00000020L
92 #define ACMFILTERCHOOSE_STYLEF_INITTOFILTERSTRUCT   0x00000040L
93 #define ACMFILTERCHOOSE_STYLEF_CONTEXTHELP          0x00000080L
94
95 #define ACMFILTERDETAILS_FILTER_CHARS 128
96
97 #define ACM_FILTERDETAILSF_INDEX     0x00000000L
98 #define ACM_FILTERDETAILSF_FILTER    0x00000001L
99 #define ACM_FILTERDETAILSF_QUERYMASK 0x0000000FL
100
101 #define ACMFILTERTAGDETAILS_FILTERTAG_CHARS 48
102
103 #define ACM_FILTERTAGDETAILSF_INDEX       0x00000000L
104 #define ACM_FILTERTAGDETAILSF_FILTERTAG   0x00000001L
105 #define ACM_FILTERTAGDETAILSF_LARGESTSIZE 0x00000002L
106 #define ACM_FILTERTAGDETAILSF_QUERYMASK   0x0000000FL
107
108 #define ACM_FILTERENUMF_DWFILTERTAG 0x00010000L
109
110 #define ACMHELPMSGSTRING32A       "acmchoose_help"
111 #define ACMHELPMSGSTRING32W       L"acmchoose_help"
112 #define ACMHELPMSGSTRING16       "acmchoose_help"
113
114 #define ACMHELPMSGCONTEXTMENU32A  "acmchoose_contextmenu"
115 #define ACMHELPMSGCONTEXTMENU32W  L"acmchoose_contextmenu"
116 #define ACMHELPMSGCONTEXTMENU16   "acmchoose_contextmenu"
117
118 #define ACMHELPMSGCONTEXTHELP32A  "acmchoose_contexthelp"
119 #define ACMHELPMSGCONTEXTHELP32W  L"acmchoose_contexthelp"
120 #define ACMHELPMSGCONTEXTHELP16   "acmchoose_contexthelp"
121
122 #define MM_ACM_FORMATCHOOSE 0x8000
123
124 #define FORMATCHOOSE_MESSAGE          0
125 #define FORMATCHOOSE_FORMATTAG_VERIFY (FORMATCHOOSE_MESSAGE+0)
126 #define FORMATCHOOSE_FORMAT_VERIFY    (FORMATCHOOSE_MESSAGE+1)
127 #define FORMATCHOOSE_CUSTOM_VERIFY    (FORMATCHOOSE_MESSAGE+2)
128
129 #define ACMFORMATCHOOSE_STYLEF_SHOWHELP             0x00000004L
130 #define ACMFORMATCHOOSE_STYLEF_ENABLEHOOK           0x00000008L
131 #define ACMFORMATCHOOSE_STYLEF_ENABLETEMPLATE       0x00000010L
132 #define ACMFORMATCHOOSE_STYLEF_ENABLETEMPLATEHANDLE 0x00000020L
133 #define ACMFORMATCHOOSE_STYLEF_INITTOWFXSTRUCT      0x00000040L
134 #define ACMFORMATCHOOSE_STYLEF_CONTEXTHELP          0x00000080L
135
136 #define ACMFORMATDETAILS_FORMAT_CHARS   128
137
138 #define ACM_FORMATDETAILSF_INDEX     0x00000000L
139 #define ACM_FORMATDETAILSF_FORMAT    0x00000001L
140 #define ACM_FORMATDETAILSF_QUERYMASK 0x0000000FL
141
142 #define ACM_FORMATENUMF_WFORMATTAG     0x00010000L
143 #define ACM_FORMATENUMF_NCHANNELS      0x00020000L
144 #define ACM_FORMATENUMF_NSAMPLESPERSEC 0x00040000L
145 #define ACM_FORMATENUMF_WBITSPERSAMPLE 0x00080000L
146 #define ACM_FORMATENUMF_CONVERT        0x00100000L
147 #define ACM_FORMATENUMF_SUGGEST        0x00200000L
148 #define ACM_FORMATENUMF_HARDWARE       0x00400000L
149 #define ACM_FORMATENUMF_INPUT          0x00800000L
150 #define ACM_FORMATENUMF_OUTPUT         0x01000000L
151
152 #define ACM_FORMATSUGGESTF_WFORMATTAG     0x00010000L
153 #define ACM_FORMATSUGGESTF_NCHANNELS      0x00020000L
154 #define ACM_FORMATSUGGESTF_NSAMPLESPERSEC 0x00040000L
155 #define ACM_FORMATSUGGESTF_WBITSPERSAMPLE 0x00080000L
156 #define ACM_FORMATSUGGESTF_TYPEMASK       0x00FF0000L
157
158 #define ACMFORMATTAGDETAILS_FORMATTAG_CHARS 48
159
160 #define ACM_FORMATTAGDETAILSF_INDEX       0x00000000L
161 #define ACM_FORMATTAGDETAILSF_FORMATTAG   0x00000001L
162 #define ACM_FORMATTAGDETAILSF_LARGESTSIZE 0x00000002L
163 #define ACM_FORMATTAGDETAILSF_QUERYMASK   0x0000000FL
164
165 #define ACM_METRIC_COUNT_DRIVERS            1
166 #define ACM_METRIC_COUNT_CODECS             2
167 #define ACM_METRIC_COUNT_CONVERTERS         3
168 #define ACM_METRIC_COUNT_FILTERS            4
169 #define ACM_METRIC_COUNT_DISABLED           5
170 #define ACM_METRIC_COUNT_HARDWARE           6
171 #define ACM_METRIC_COUNT_LOCAL_DRIVERS     20
172 #define ACM_METRIC_COUNT_LOCAL_CODECS      21
173 #define ACM_METRIC_COUNT_LOCAL_CONVERTERS  22
174 #define ACM_METRIC_COUNT_LOCAL_FILTERS     23
175 #define ACM_METRIC_COUNT_LOCAL_DISABLED    24
176 #define ACM_METRIC_HARDWARE_WAVE_INPUT     30
177 #define ACM_METRIC_HARDWARE_WAVE_OUTPUT    31
178 #define ACM_METRIC_MAX_SIZE_FORMAT         50
179 #define ACM_METRIC_MAX_SIZE_FILTER         51
180 #define ACM_METRIC_DRIVER_SUPPORT         100
181 #define ACM_METRIC_DRIVER_PRIORITY        101
182
183 #define ACM_STREAMCONVERTF_BLOCKALIGN 0x00000004
184 #define ACM_STREAMCONVERTF_START      0x00000010
185 #define ACM_STREAMCONVERTF_END        0x00000020
186
187 #define ACMSTREAMHEADER_STATUSF_DONE     0x00010000L
188 #define ACMSTREAMHEADER_STATUSF_PREPARED 0x00020000L
189 #define ACMSTREAMHEADER_STATUSF_INQUEUE  0x00100000L
190
191 #define ACM_STREAMOPENF_QUERY       0x00000001
192 #define ACM_STREAMOPENF_ASYNC       0x00000002
193 #define ACM_STREAMOPENF_NONREALTIME 0x00000004
194
195 #define ACM_STREAMSIZEF_SOURCE      0x00000000L
196 #define ACM_STREAMSIZEF_DESTINATION 0x00000001L
197 #define ACM_STREAMSIZEF_QUERYMASK   0x0000000FL
198
199 #define ACMDM_USER                  (DRV_USER + 0x0000)
200 #define ACMDM_RESERVED_LOW          (DRV_USER + 0x2000)
201 #define ACMDM_RESERVED_HIGH         (DRV_USER + 0x2FFF)
202
203 #define ACMDM_BASE                  ACMDM_RESERVED_LOW
204
205 #define ACMDM_DRIVER_ABOUT          (ACMDM_BASE + 11)
206
207 /***********************************************************************
208  * Callbacks
209  */
210
211 typedef BOOL32 (CALLBACK *ACMDRIVERENUMCB32)(
212   HACMDRIVERID32 hadid, DWORD dwInstance, DWORD fdwSupport
213 );
214
215 typedef BOOL16 (CALLBACK *ACMDRIVERENUMCB16)(
216   HACMDRIVERID16 hadid, DWORD dwInstance, DWORD fdwSupport
217 );
218
219 typedef UINT32 (CALLBACK *ACMFILTERCHOOSEHOOKPROC32A)(
220   HWND32 hwnd, UINT32 uMsg, WPARAM32 wParam, LPARAM lParam
221 );
222
223 typedef UINT32 (CALLBACK *ACMFILTERCHOOSEHOOKPROC32W)(
224   HWND32 hwnd, UINT32 uMsg, WPARAM32 wParam, LPARAM lParam
225 );
226
227 typedef UINT32 (CALLBACK *ACMFILTERCHOOSEHOOKPROC16)(
228   HWND32 hwnd, UINT32 uMsg, WPARAM32 wParam, LPARAM lParam
229 );
230
231 typedef UINT32 (CALLBACK *ACMFORMATCHOOSEHOOKPROC32A)(
232   HWND32 hwnd, UINT32 uMsg, WPARAM32 wParam, LPARAM lParam
233 );
234
235 typedef UINT32 (CALLBACK *ACMFORMATCHOOSEHOOKPROC32W)(
236   HWND32 hwnd, UINT32 uMsg, WPARAM32 wParam, LPARAM lParam
237 );
238
239 typedef UINT16 (CALLBACK *ACMFORMATCHOOSEHOOKPROC16)(
240   HWND16 hwnd, UINT16 uMsg, WPARAM16 wParam, LPARAM lParam
241 );
242
243 /***********************************************************************
244  * Structures
245  */
246
247 typedef struct _ACMDRIVERDETAILS32A
248 {
249   DWORD    cbStruct;
250
251   FOURCC   fccType;
252   FOURCC   fccComp;
253
254   WORD     wMid;
255   WORD     wPid;
256
257   DWORD    vdwACM;
258   DWORD    vdwDriver;
259
260   DWORD    fdwSupport;
261   DWORD    cFormatTags;
262   DWORD    cFilterTags;
263
264   HICON32  hicon;
265
266   CHAR     szShortName[ACMDRIVERDETAILS_SHORTNAME_CHARS];
267   CHAR     szLongName[ACMDRIVERDETAILS_LONGNAME_CHARS];
268   CHAR     szCopyright[ACMDRIVERDETAILS_COPYRIGHT_CHARS];
269   CHAR     szLicensing[ACMDRIVERDETAILS_LICENSING_CHARS];
270   CHAR     szFeatures[ACMDRIVERDETAILS_FEATURES_CHARS];
271 } ACMDRIVERDETAILS32A, *PACMDRIVERDETAILS32A;
272
273 typedef struct _ACMDRIVERDETAILS32W
274 {
275   DWORD    cbStruct;
276
277   FOURCC   fccType;
278   FOURCC   fccComp;
279
280   WORD     wMid;
281   WORD     wPid;
282
283   DWORD    vdwACM;
284   DWORD    vdwDriver;
285
286   DWORD    fdwSupport;
287   DWORD    cFormatTags;
288   DWORD    cFilterTags;
289
290   HICON32  hicon;
291
292   WCHAR    szShortName[ACMDRIVERDETAILS_SHORTNAME_CHARS];
293   WCHAR    szLongName[ACMDRIVERDETAILS_LONGNAME_CHARS];
294   WCHAR    szCopyright[ACMDRIVERDETAILS_COPYRIGHT_CHARS];
295   WCHAR    szLicensing[ACMDRIVERDETAILS_LICENSING_CHARS];
296   WCHAR    szFeatures[ACMDRIVERDETAILS_FEATURES_CHARS];
297 } ACMDRIVERDETAILS32W, *PACMDRIVERDETAILS32W;
298
299 typedef struct _ACMDRIVERDETAILS16
300 {
301   DWORD   cbStruct;
302
303   FOURCC  fccType;
304   FOURCC  fccComp;
305
306   WORD    wMid;
307   WORD    wPid;
308
309   DWORD   vdwACM;
310   DWORD   vdwDriver;
311
312   DWORD   fdwSupport;
313   DWORD   cFormatTags;
314   DWORD   cFilterTags;
315
316   HICON16 hicon;
317
318   CHAR    szShortName[ACMDRIVERDETAILS_SHORTNAME_CHARS];
319   CHAR    szLongName[ACMDRIVERDETAILS_LONGNAME_CHARS];
320   CHAR    szCopyright[ACMDRIVERDETAILS_COPYRIGHT_CHARS];
321   CHAR    szLicensing[ACMDRIVERDETAILS_LICENSING_CHARS];
322   CHAR    szFeatures[ACMDRIVERDETAILS_FEATURES_CHARS];
323 } ACMDRIVERDETAILS16, *NPACMDRIVERDETAILS16, *LPACMDRIVERDETAILS16;
324
325 typedef struct _ACMFILTERCHOOSE32A
326 {
327   DWORD         cbStruct;
328   DWORD         fdwStyle;
329
330   HWND32        hwndOwner;
331
332   PWAVEFILTER32 pwfltr;
333   DWORD         cbwfltr;
334
335   LPCSTR        pszTitle;
336
337   CHAR          szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
338   CHAR          szFilter[ACMFILTERDETAILS_FILTER_CHARS];
339   LPSTR         pszName;
340   DWORD         cchName;
341
342   DWORD         fdwEnum;
343   PWAVEFILTER32 pwfltrEnum;
344     
345   HINSTANCE32   hInstance;
346   LPCSTR        pszTemplateName;
347   LPARAM        lCustData;
348   ACMFILTERCHOOSEHOOKPROC32A pfnHook;
349 } ACMFILTERCHOOSE32A, *PACMFILTERCHOOSE32A;
350
351 typedef struct _ACMFILTERCHOOSE32W
352 {
353   DWORD         cbStruct;
354   DWORD         fdwStyle;
355
356   HWND32        hwndOwner;
357
358   PWAVEFILTER32 pwfltr;
359   DWORD         cbwfltr;
360
361   LPCWSTR       pszTitle;
362
363   WCHAR         szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
364   WCHAR         szFilter[ACMFILTERDETAILS_FILTER_CHARS];
365   LPWSTR        pszName;
366   DWORD         cchName;
367
368   DWORD         fdwEnum;
369   PWAVEFILTER32 pwfltrEnum;
370     
371   HINSTANCE32   hInstance;
372   LPCWSTR       pszTemplateName;
373   LPARAM        lCustData;
374   ACMFILTERCHOOSEHOOKPROC32W pfnHook;
375 } ACMFILTERCHOOSE32W, *PACMFILTERCHOOSE32W;
376
377 typedef struct _ACMFILTERCHOOSE16
378 {
379   DWORD          cbStruct;
380   DWORD          fdwStyle;
381
382   HWND16         hwndOwner;
383
384   LPWAVEFILTER16 pwfltr;
385   DWORD          cbwfltr;
386
387   LPCSTR         pszTitle;
388
389   char           szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
390   char           szFilter[ACMFILTERDETAILS_FILTER_CHARS];
391   LPSTR          pszName;
392   DWORD          cchName;
393
394   DWORD          fdwEnum;
395   LPWAVEFILTER16 pwfltrEnum;
396     
397   HINSTANCE16    hInstance;
398   LPCSTR         pszTemplateName;
399   LPARAM         lCustData;
400   ACMFILTERCHOOSEHOOKPROC16 pfnHook;
401 } ACMFILTERCHOOSE16, *NPACMFILTERCHOOSE16, *LPACMFILTERCHOOSE16;
402
403 typedef struct _ACMFILTERDETAILS32A
404 {
405   DWORD           cbStruct;
406   DWORD           dwFilterIndex;
407   DWORD           dwFilterTag;
408   DWORD           fdwSupport;
409   PWAVEFILTER32   pwfltr;
410   DWORD           cbwfltr;
411   CHAR            szFilter[ACMFILTERDETAILS_FILTER_CHARS];
412 } ACMFILTERDETAILS32A, *PACMFILTERDETAILS32A;
413
414 typedef struct _ACMFILTERDETAILS32W
415 {
416   DWORD          cbStruct;
417   DWORD          dwFilterIndex;
418   DWORD          dwFilterTag;
419   DWORD          fdwSupport;
420   PWAVEFILTER32  pwfltr;
421   DWORD          cbwfltr;
422   WCHAR          szFilter[ACMFILTERDETAILS_FILTER_CHARS];
423 } ACMFILTERDETAILS32W, *PACMFILTERDETAILS32W;
424
425 typedef struct _ACMFILTERDETAILS16
426 {
427   DWORD          cbStruct;
428   DWORD          dwFilterIndex;
429   DWORD          dwFilterTag;
430   DWORD          fdwSupport;
431   LPWAVEFILTER16 pwfltr;
432   DWORD          cbwfltr;
433   CHAR           szFilter[ACMFILTERDETAILS_FILTER_CHARS];
434 } ACMFILTERDETAILS16, *NPACMFILTERDETAILS16, *LPACMFILTERDETAILS16;
435
436 typedef struct _ACMFILTERTAGDETAILS32A
437 {
438   DWORD cbStruct;
439   DWORD dwFilterTagIndex;
440   DWORD dwFilterTag;
441   DWORD cbFilterSize;
442   DWORD fdwSupport;
443   DWORD cStandardFilters;
444   CHAR  szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
445 } ACMFILTERTAGDETAILS32A, *PACMFILTERTAGDETAILS32A;
446
447 typedef struct _ACMFILTERTAGDETAILS32W
448 {
449   DWORD cbStruct;
450   DWORD dwFilterTagIndex;
451   DWORD dwFilterTag;
452   DWORD cbFilterSize;
453   DWORD fdwSupport;
454   DWORD cStandardFilters;
455   WCHAR szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
456 } ACMFILTERTAGDETAILS32W, *PACMFILTERTAGDETAILS32W;
457
458 typedef struct _ACMFILTERTAGDETAILS16
459 {
460   DWORD cbStruct;
461   DWORD dwFilterTagIndex;
462   DWORD dwFilterTag;
463   DWORD cbFilterSize;
464   DWORD fdwSupport;
465   DWORD cStandardFilters;
466   CHAR  szFilterTag[ACMFILTERTAGDETAILS_FILTERTAG_CHARS];
467 } ACMFILTERTAGDETAILS16, *NPACMFILTERTAGDETAILS16, *LPACMFILTERTAGDETAILS16;
468
469 typedef struct _ACMFORMATCHOOSE32A
470 {
471   DWORD           cbStruct;
472   DWORD           fdwStyle;
473  
474   HWND32          hwndOwner;
475
476   PWAVEFORMATEX32 pwfx;
477   DWORD           cbwfx;
478   LPCSTR          pszTitle;
479     
480   CHAR            szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
481   CHAR            szFormat[ACMFORMATDETAILS_FORMAT_CHARS];    
482
483   LPSTR           pszName;
484   DWORD           cchName;
485
486   DWORD           fdwEnum;
487   PWAVEFORMATEX32 pwfxEnum;
488     
489   HINSTANCE32     hInstance;
490   LPCSTR          pszTemplateName;
491   LPARAM          lCustData;
492   ACMFORMATCHOOSEHOOKPROC32A pfnHook;
493 } ACMFORMATCHOOSE32A, *PACMFORMATCHOOSE32A;
494
495 typedef struct _ACMFORMATCHOOSE32W
496 {
497   DWORD           cbStruct;
498   DWORD           fdwStyle;
499     
500   HWND32          hwndOwner;
501
502   PWAVEFORMATEX32 pwfx;
503   DWORD           cbwfx;
504   LPCWSTR         pszTitle;
505     
506   WCHAR           szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
507   WCHAR           szFormat[ACMFORMATDETAILS_FORMAT_CHARS];    
508
509   LPWSTR          pszName;
510   DWORD           cchName;
511
512   DWORD           fdwEnum;
513   LPWAVEFORMATEX  pwfxEnum;
514     
515   HINSTANCE32     hInstance;
516   LPCWSTR         pszTemplateName;
517   LPARAM          lCustData;
518   ACMFORMATCHOOSEHOOKPROC32W pfnHook;
519 } ACMFORMATCHOOSE32W, *PACMFORMATCHOOSE32W;
520
521 typedef struct _ACMFORMATCHOOSE16
522 {
523   DWORD            cbStruct;
524   DWORD            fdwStyle;
525     
526   HWND16           hwndOwner;
527
528   LPWAVEFORMATEX16 pwfx;
529   DWORD            cbwfx;
530   LPCSTR           pszTitle;
531     
532   CHAR             szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
533   CHAR             szFormat[ACMFORMATDETAILS_FORMAT_CHARS];    
534
535   LPSTR            pszName;
536   DWORD            cchName;
537
538   DWORD            fdwEnum;
539   LPWAVEFORMATEX16 pwfxEnum;
540     
541   HINSTANCE16      hInstance;
542   LPCSTR           pszTemplateName;
543   LPARAM           lCustData;
544   ACMFORMATCHOOSEHOOKPROC16 pfnHook;
545 } ACMFORMATCHOOSE16, *NPACMFORMATCHOOSE16, *LPACMFORMATCHOOSE16;
546
547 typedef struct _ACMFORMATDETAILS32A
548 {
549   DWORD           cbStruct;
550   DWORD           dwFormatIndex;
551   DWORD           dwFormatTag;
552   DWORD           fdwSupport;
553   PWAVEFORMATEX32 pwfx;
554   DWORD           cbwfx;
555   CHAR            szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
556 } ACMFORMATDETAILS32A, *PACMFORMATDETAILS32A;
557
558 typedef struct _ACMFORMATDETAILS32W
559 {
560     DWORD           cbStruct;
561     DWORD           dwFormatIndex;
562     DWORD           dwFormatTag;
563     DWORD           fdwSupport;
564     PWAVEFORMATEX32 pwfx;
565     DWORD           cbwfx;
566     WCHAR           szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
567 } ACMFORMATDETAILS32W, *PACMFORMATDETAILS32W;
568
569 typedef struct _ACMFORMATDETAILS16
570 {
571     DWORD            cbStruct;
572     DWORD            dwFormatIndex;
573     DWORD            dwFormatTag;
574     DWORD            fdwSupport;
575     LPWAVEFORMATEX16 pwfx;
576     DWORD            cbwfx;
577     CHAR             szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
578 } ACMFORMATDETAILS16, *NPACMFORMATDETAILS16, *LPACMFORMATDETAILS16;
579
580 typedef struct _ACMFORMATTAGDETAILS32A
581 {
582   DWORD cbStruct;
583   DWORD dwFormatTagIndex;
584   DWORD dwFormatTag;
585   DWORD cbFormatSize;
586   DWORD fdwSupport;
587   DWORD cStandardFormats;
588   CHAR  szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
589 } ACMFORMATTAGDETAILS32A, *PACMFORMATTAGDETAILS32A;
590
591 typedef struct _ACMFORMATTAGDETAILS32W
592 {
593   DWORD cbStruct;
594   DWORD dwFormatTagIndex;
595   DWORD dwFormatTag;
596   DWORD cbFormatSize;
597   DWORD fdwSupport;
598   DWORD cStandardFormats;
599   WCHAR szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
600 } ACMFORMATTAGDETAILS32W, *PACMFORMATTAGDETAILS32W;
601
602 typedef struct _ACMFORMATTAGDETAILS16
603 {
604   DWORD cbStruct;
605   DWORD dwFormatTagIndex;
606   DWORD dwFormatTag;
607   DWORD cbFormatSize;
608   DWORD fdwSupport;
609   DWORD cStandardFormats;
610   CHAR  szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
611 } ACMFORMATTAGDETAILS16, *NPACMFORMATTAGDETAILS16, *LPACMFORMATTAGDETAILS16;
612
613 typedef struct _ACMSTREAMHEADER
614 {
615   DWORD  cbStruct;
616   DWORD  fdwStatus;
617   DWORD  dwUser;
618   LPBYTE pbSrc;
619   DWORD  cbSrcLength;
620   DWORD  cbSrcLengthUsed;
621   DWORD  dwSrcUser;
622   LPBYTE pbDst;
623   DWORD  cbDstLength;
624   DWORD  cbDstLengthUsed;
625   DWORD  dwDstUser;
626   DWORD  dwReservedDriver[10];
627 } ACMSTREAMHEADER16, *NPACMSTREAMHEADER16, *LPACMSTREAMHEADER16,
628   ACMSTREAMHEADER32, *PACMSTREAMHEADER32;
629
630 /***********************************************************************
631  * Callbacks 2
632  */
633
634 typedef BOOL32 (CALLBACK *ACMFILTERENUMCB32A)(
635   HACMDRIVERID32 hadid, PACMFILTERDETAILS32A pafd,
636   DWORD dwInstance, DWORD fdwSupport
637 );
638
639 typedef BOOL32 (CALLBACK *ACMFILTERENUMCB32W)(
640   HACMDRIVERID32 hadid, PACMFILTERDETAILS32W pafd,
641   DWORD dwInstance, DWORD fdwSupport
642 );
643
644 typedef BOOL16 (CALLBACK *ACMFILTERENUMCB16)(
645  HACMDRIVERID16 hadid, LPACMFILTERDETAILS16 pafd,
646  DWORD dwInstance, DWORD fdwSupport
647 );
648
649 typedef BOOL32 (CALLBACK *ACMFILTERTAGENUMCB32A)(
650   HACMDRIVERID32 hadid, PACMFILTERTAGDETAILS32A paftd,
651   DWORD dwInstance, DWORD fdwSupport
652 );
653
654 typedef BOOL32 (CALLBACK *ACMFILTERTAGENUMCB32W)(
655   HACMDRIVERID32 hadid, PACMFILTERTAGDETAILS32W paftd,
656   DWORD dwInstance, DWORD fdwSupport
657 );
658
659 typedef BOOL16 (CALLBACK *ACMFILTERTAGENUMCB16)(
660   HACMDRIVERID16 hadid, LPACMFILTERTAGDETAILS16 paftd,
661   DWORD dwInstance, DWORD fdwSupport
662 );
663
664 typedef BOOL32 (CALLBACK *ACMFORMATENUMCB32A)(
665   HACMDRIVERID32 hadid, PACMFORMATDETAILS32A pafd,
666   DWORD dwInstance, DWORD fdwSupport
667 );
668
669 typedef BOOL32 (CALLBACK *ACMFORMATENUMCB32W)(
670   HACMDRIVERID32 hadid, PACMFORMATDETAILS32W pafd,
671   DWORD dwInstance, DWORD fdwSupport
672 );
673
674 typedef BOOL16 (CALLBACK *ACMFORMATENUMCB16)(
675   HACMDRIVERID16 hadid, LPACMFORMATDETAILS16 pafd,
676   DWORD dwInstance, DWORD fdwSupport
677 );
678
679 typedef BOOL32 (CALLBACK *ACMFORMATTAGENUMCB32A)(
680   HACMDRIVERID32 hadid, PACMFORMATTAGDETAILS32A paftd,
681   DWORD dwInstance, DWORD fdwSupport
682 );
683
684 typedef BOOL32 (CALLBACK *ACMFORMATTAGENUMCB32W)(
685   HACMDRIVERID32 hadid, PACMFORMATTAGDETAILS32W paftd,
686   DWORD dwInstance, DWORD fdwSupport
687 );
688
689 typedef BOOL16 (CALLBACK *ACMFORMATTAGENUMCB16)(
690   HACMDRIVERID16 hadid, LPACMFORMATTAGDETAILS16 paftd,
691   DWORD dwInstance, DWORD fdwSupport
692 );
693
694 /***********************************************************************
695  * Functions - Win16
696  */
697
698 DWORD WINAPI acmGetVersion16(
699 );
700 MMRESULT16 WINAPI acmMetrics16(
701   HACMOBJ16 hao, UINT16 uMetric, LPVOID pMetric
702 );
703 MMRESULT16 WINAPI acmDriverEnum16(
704   ACMDRIVERENUMCB16 fnCallback, DWORD dwInstance, DWORD fdwEnum
705 );
706 MMRESULT16 WINAPI acmDriverDetails16(
707   HACMDRIVERID16 hadid, LPACMDRIVERDETAILS16 padd, DWORD fdwDetails
708 );
709 MMRESULT16 WINAPI acmDriverAdd16(
710   LPHACMDRIVERID16 phadid, HINSTANCE16 hinstModule,
711   LPARAM lParam, DWORD dwPriority, DWORD fdwAdd
712 );
713 MMRESULT16 WINAPI acmDriverRemove16(
714   HACMDRIVERID16 hadid, DWORD fdwRemove
715 );
716 MMRESULT16 WINAPI acmDriverOpen16(
717   LPHACMDRIVER16 phad, HACMDRIVERID16 hadid, DWORD fdwOpen
718 );
719 MMRESULT16 WINAPI acmDriverClose16(
720   HACMDRIVER16 had, DWORD fdwClose
721 );
722 LRESULT WINAPI acmDriverMessage16(
723   HACMDRIVER16 had, UINT16 uMsg, LPARAM lParam1, LPARAM lParam2
724 );
725 MMRESULT16 WINAPI acmDriverID16(
726   HACMOBJ16 hao, LPHACMDRIVERID16 phadid, DWORD fdwDriverID
727 );
728 MMRESULT16 WINAPI acmDriverPriority16(
729  HACMDRIVERID16 hadid, DWORD dwPriority, DWORD fdwPriority
730 );
731 MMRESULT16 WINAPI acmFormatTagDetails16(
732   HACMDRIVER16 had, LPACMFORMATTAGDETAILS16 paftd, DWORD fdwDetails
733 );
734 MMRESULT16 WINAPI acmFormatTagEnum16(
735   HACMDRIVER16 had, LPACMFORMATTAGDETAILS16 paftd,
736   ACMFORMATTAGENUMCB16 fnCallback, DWORD dwInstance, DWORD fdwEnum
737 );
738 MMRESULT16 WINAPI acmFormatChoose16(
739   LPACMFORMATCHOOSE16 pafmtc
740 );
741 MMRESULT16 WINAPI acmFormatDetails16(
742   HACMDRIVER16 had, LPACMFORMATDETAILS16 pafd, DWORD fdwDetails
743 );
744 MMRESULT16 WINAPI acmFormatEnum16(
745   HACMDRIVER16 had, LPACMFORMATDETAILS16 pafd,
746   ACMFORMATENUMCB16 fnCallback, DWORD dwInstance, DWORD fdwEnum
747 );
748 MMRESULT16 WINAPI acmFormatSuggest16(
749   HACMDRIVER16 had, LPWAVEFORMATEX16 pwfxSrc, 
750   LPWAVEFORMATEX16 pwfxDst, DWORD cbwfxDst, DWORD fdwSuggest
751 );
752 MMRESULT16 WINAPI acmFilterTagDetails16(
753   HACMDRIVER16 had, LPACMFILTERTAGDETAILS16 paftd, DWORD fdwDetails
754 );
755 MMRESULT16 WINAPI acmFilterTagEnum16(
756   HACMDRIVER16 had, LPACMFILTERTAGDETAILS16 paftd,
757   ACMFILTERTAGENUMCB16 fnCallback, DWORD dwInstance, DWORD fdwEnum
758 );
759 MMRESULT16 WINAPI acmFilterChoose16(
760   LPACMFILTERCHOOSE16 pafltrc
761 );
762 MMRESULT16 WINAPI acmFilterDetails16(
763   HACMDRIVER16 had, LPACMFILTERDETAILS16 pafd, DWORD fdwDetails
764 );
765 MMRESULT16 WINAPI acmFilterEnum16(
766   HACMDRIVER16 had, LPACMFILTERDETAILS16 pafd,
767   ACMFILTERENUMCB16 fnCallback, DWORD dwInstance, DWORD fdwEnum
768 );
769 MMRESULT16 WINAPI acmStreamOpen16(
770   LPHACMSTREAM16 phas, HACMDRIVER16 had,
771   LPWAVEFORMATEX16 pwfxSrc, LPWAVEFORMATEX16 pwfxDst,
772   LPWAVEFILTER16 pwfltr, DWORD dwCallback,
773   DWORD dwInstance, DWORD fdwOpen
774 );
775 MMRESULT16 WINAPI acmStreamClose16(
776   HACMSTREAM16 has, DWORD fdwClose
777 );
778 MMRESULT16 WINAPI acmStreamSize16(
779   HACMSTREAM16 has, DWORD cbInput, 
780   LPDWORD pdwOutputBytes, DWORD fdwSize
781 );
782 MMRESULT16 WINAPI acmStreamConvert16(
783   HACMSTREAM16 has, LPACMSTREAMHEADER16 pash, DWORD fdwConvert
784 );
785 MMRESULT16 WINAPI acmStreamReset16(
786   HACMSTREAM16 has, DWORD fdwReset
787 );
788 MMRESULT16 WINAPI acmStreamPrepareHeader16(
789   HACMSTREAM16 has, LPACMSTREAMHEADER16 pash, DWORD fdwPrepare
790 );
791 MMRESULT16 WINAPI acmStreamUnprepareHeader16(
792   HACMSTREAM16 has, LPACMSTREAMHEADER16 pash, DWORD fdwUnprepare
793 );
794
795 /***********************************************************************
796  * Functions - Win32
797  */
798
799 MMRESULT32 WINAPI acmDriverAdd32A(
800   PHACMDRIVERID32 phadid, HINSTANCE32 hinstModule,
801   LPARAM lParam, DWORD dwPriority, DWORD fdwAdd
802 );
803 MMRESULT32 WINAPI acmDriverAdd32W(
804   PHACMDRIVERID32 phadid, HINSTANCE32 hinstModule,
805   LPARAM lParam, DWORD dwPriority, DWORD fdwAdd
806 );
807 MMRESULT32 WINAPI acmDriverClose32(
808   HACMDRIVER32 had, DWORD fdwClose
809 );
810 MMRESULT32 WINAPI acmDriverDetails32A(
811   HACMDRIVERID32 hadid, PACMDRIVERDETAILS32A padd, DWORD fdwDetails
812 );
813 MMRESULT32 WINAPI acmDriverDetails32W(
814   HACMDRIVERID32 hadid, PACMDRIVERDETAILS32W padd, DWORD fdwDetails
815 );
816 MMRESULT32 WINAPI acmDriverEnum32(
817   ACMDRIVERENUMCB32 fnCallback, DWORD dwInstance, DWORD fdwEnum
818 );
819 MMRESULT32 WINAPI acmDriverID32(
820   HACMOBJ32 hao, PHACMDRIVERID32 phadid, DWORD fdwDriverID
821 );
822 LRESULT WINAPI acmDriverMessage32(
823   HACMDRIVER32 had, UINT32 uMsg, LPARAM lParam1, LPARAM lParam2
824 );
825 MMRESULT32 WINAPI acmDriverOpen32(
826   PHACMDRIVER32 phad, HACMDRIVERID32 hadid, DWORD fdwOpen
827 );
828 MMRESULT32 WINAPI acmDriverPriority32(
829   HACMDRIVERID32 hadid, DWORD dwPriority, DWORD fdwPriority
830 );
831 MMRESULT32 WINAPI acmDriverRemove32(
832   HACMDRIVERID32 hadid, DWORD fdwRemove
833 );
834 MMRESULT32 WINAPI acmFilterChoose32A(
835   PACMFILTERCHOOSE32A pafltrc
836 );
837 MMRESULT32 WINAPI acmFilterChoose32W(
838   PACMFILTERCHOOSE32W pafltrc
839 );
840 MMRESULT32 WINAPI acmFilterDetails32A(
841   HACMDRIVER32 had, PACMFILTERDETAILS32A pafd, DWORD fdwDetails
842 );
843 MMRESULT32 WINAPI acmFilterDetails32W(
844   HACMDRIVER32 had, PACMFILTERDETAILS32W pafd, DWORD fdwDetails
845 );
846 MMRESULT32 WINAPI acmFilterEnum32A(
847   HACMDRIVER32 had, PACMFILTERDETAILS32A pafd, 
848   ACMFILTERENUMCB32A fnCallback, DWORD dwInstance, DWORD fdwEnum
849 );
850 MMRESULT32 WINAPI acmFilterEnum32W(
851   HACMDRIVER32 had, PACMFILTERDETAILS32W pafd, 
852   ACMFILTERENUMCB32W fnCallback, DWORD dwInstance, DWORD fdwEnum
853 );
854 MMRESULT32 WINAPI acmFilterTagDetails32A(
855   HACMDRIVER32 had, PACMFILTERTAGDETAILS32A paftd, DWORD fdwDetails
856 );
857 MMRESULT32 WINAPI acmFilterTagDetails32W(
858   HACMDRIVER32 had, PACMFILTERTAGDETAILS32W paftd, DWORD fdwDetails
859 );
860 MMRESULT32 WINAPI acmFilterTagEnum32A(
861   HACMDRIVER32 had, PACMFILTERTAGDETAILS32A paftd,
862   ACMFILTERTAGENUMCB32A fnCallback, DWORD dwInstance, DWORD fdwEnum
863 );
864 MMRESULT32 WINAPI acmFilterTagEnum32W(
865   HACMDRIVER32 had, PACMFILTERTAGDETAILS32W paftd,
866   ACMFILTERTAGENUMCB32W fnCallback, DWORD dwInstance, DWORD fdwEnum
867 );
868 MMRESULT32 WINAPI acmFormatChoose32A(
869   PACMFORMATCHOOSE32A pafmtc
870 );
871 MMRESULT32 WINAPI acmFormatChoose32W(
872   PACMFORMATCHOOSE32W pafmtc
873 );
874 MMRESULT32 WINAPI acmFormatDetails32A(
875   HACMDRIVER32 had, PACMFORMATDETAILS32A pafd, DWORD fdwDetails
876 );
877 MMRESULT32 WINAPI acmFormatDetails32W(
878   HACMDRIVER32 had, PACMFORMATDETAILS32W pafd, DWORD fdwDetails
879 );
880 MMRESULT32 WINAPI acmFormatEnum32A(
881   HACMDRIVER32 had, PACMFORMATDETAILS32A pafd,
882   ACMFORMATENUMCB32A fnCallback, DWORD dwInstance, DWORD fdwEnum
883 );
884 MMRESULT32 WINAPI acmFormatEnum32W(
885   HACMDRIVER32 had, PACMFORMATDETAILS32W pafd,
886   ACMFORMATENUMCB32W fnCallback, DWORD dwInstance,  DWORD fdwEnum
887 );
888 MMRESULT32 WINAPI acmFormatSuggest32(
889   HACMDRIVER32 had, PWAVEFORMATEX32 pwfxSrc, PWAVEFORMATEX32 pwfxDst,
890   DWORD cbwfxDst, DWORD fdwSuggest
891 );
892 MMRESULT32 WINAPI acmFormatTagDetails32A(
893   HACMDRIVER32 had, PACMFORMATTAGDETAILS32A paftd, DWORD fdwDetails
894 );
895 MMRESULT32 WINAPI acmFormatTagDetails32W(
896   HACMDRIVER32 had, PACMFORMATTAGDETAILS32W paftd, DWORD fdwDetails
897 );
898 MMRESULT32 WINAPI acmFormatTagEnum32A(
899   HACMDRIVER32 had, PACMFORMATTAGDETAILS32A paftd,
900   ACMFORMATTAGENUMCB32A fnCallback, DWORD dwInstance, DWORD fdwEnum
901 );
902 MMRESULT32 WINAPI acmFormatTagEnum32W(
903   HACMDRIVER32 had, PACMFORMATTAGDETAILS32W paftd,
904   ACMFORMATTAGENUMCB32W fnCallback, DWORD dwInstance, DWORD fdwEnum
905 );
906 DWORD WINAPI acmGetVersion32(
907 );
908 MMRESULT32 WINAPI acmMetrics32(
909   HACMOBJ32 hao, UINT32  uMetric, LPVOID  pMetric
910 );
911 MMRESULT32 WINAPI acmStreamClose32(
912   HACMSTREAM32 has, DWORD fdwClose
913 );
914 MMRESULT32 WINAPI acmStreamConvert32(
915   HACMSTREAM32 has, PACMSTREAMHEADER32 pash, DWORD fdwConvert
916 );
917 MMRESULT32 WINAPI acmStreamMessage32(
918   HACMSTREAM32 has, UINT32 uMsg, LPARAM lParam1, LPARAM lParam2
919 );
920 MMRESULT32 WINAPI acmStreamOpen32(
921   PHACMSTREAM32 phas, HACMDRIVER32 had, PWAVEFORMATEX32 pwfxSrc,
922   PWAVEFORMATEX32 pwfxDst, PWAVEFILTER32 pwfltr, DWORD dwCallback,
923   DWORD dwInstance, DWORD fdwOpen
924 );
925 MMRESULT32 WINAPI acmStreamPrepareHeader32(
926   HACMSTREAM32 has, PACMSTREAMHEADER32 pash, DWORD fdwPrepare
927 );
928 MMRESULT32 WINAPI acmStreamReset32(
929   HACMSTREAM32 has, DWORD fdwReset
930 );
931 MMRESULT32 WINAPI acmStreamSize32(
932   HACMSTREAM32 has, DWORD cbInput, 
933   LPDWORD pdwOutputBytes, DWORD fdwSize
934 );
935 MMRESULT32 WINAPI acmStreamUnprepareHeader32(
936   HACMSTREAM32 has, PACMSTREAMHEADER32 pash, DWORD fdwUnprepare
937 );
938
939 /***********************************************************************
940  * Wine specific - Win32
941  */
942 typedef struct _WINE_ACMBUILTINDRIVER32
943 {
944   LPSTR        pszDriverAlias;
945   DRIVERPROC32 pfnDriverProc;
946 } WINE_ACMBUILTINDRIVER32, *PWINE_ACMBUILTINDRIVER32;
947
948 typedef struct _WINE_ACMLOCALDRIVER32
949 {
950   DRIVERPROC32 pfnDriverProc;
951 } WINE_ACMLOCALDRIVER32, *PWINE_ACMLOCALDRIVER32;
952
953 typedef struct _WINE_ACMDRIVERID32 *PWINE_ACMDRIVERID32;
954
955 typedef struct _WINE_ACMOBJ32
956 {
957   PWINE_ACMDRIVERID32 pACMDriverID;
958 } WINE_ACMOBJ32, *PWINE_ACMOBJ32;
959
960 typedef struct _WINE_ACMDRIVER32
961 {
962   WINE_ACMOBJ32  obj;
963   HDRVR32        hDrvr;
964 } WINE_ACMDRIVER32, *PWINE_ACMDRIVER32;
965
966 typedef struct _WINE_ACMSTREAM32
967 {
968   WINE_ACMOBJ32  obj;
969   /* FIME: More fields needed */
970 } WINE_ACMSTREAM32, *PWINE_ACMSTREAM32;
971
972 typedef struct _WINE_ACMDRIVERID32
973 {
974   LPSTR                    pszDriverAlias;
975   LPSTR                    pszFileName;
976   PWINE_ACMLOCALDRIVER32   pACMLocalDriver;
977   BOOL32                   bEnabled;
978   PWINE_ACMDRIVER32        pACMDriver;           /* NULL if not open */
979   PWINE_ACMDRIVERID32      pNextACMDriverID;
980   PWINE_ACMDRIVERID32      pPreviousACMDriverID;
981 } WINE_ACMDRIVERID32;
982
983 /* From builtin.c */
984 extern WINE_ACMBUILTINDRIVER32 MSACM_BuiltinDrivers32[];
985
986 /* From interal.c */
987 extern HANDLE32 MSACM_hHeap32;
988 extern PWINE_ACMDRIVERID32 MSACM_pFirstACMDriverID32;
989 extern PWINE_ACMDRIVERID32 MSACM_pLastACMDriverID32;
990 PWINE_ACMDRIVERID32 MSACM_RegisterDriver32(
991   LPSTR pszDriverAlias, LPSTR pszFileName,
992   PWINE_ACMLOCALDRIVER32 pLocalDriver);
993 void MSACM_RegisterAllDrivers32();
994 PWINE_ACMDRIVERID32 MSACM_UnregisterDriver32(PWINE_ACMDRIVERID32 p);
995 void MSACM_UnregisterAllDrivers32();
996 PWINE_ACMDRIVERID32 MSACM_GetDriverID32(HACMDRIVERID32 hDriverID);
997 PWINE_ACMDRIVER32 MSACM_GetDriver32(HACMDRIVER32 hDriver);
998 PWINE_ACMOBJ32 MSACM_GetObj32(HACMOBJ32 hObj);
999 HDRVR32 MSACM_OpenDriverProc32(DRIVERPROC32 pfnDriverProc);
1000
1001 #endif  /* __WINE_MSACM_H */
1002
1003