Warn the user if he is running the test in interactive mode but the
[wine] / dlls / msacm / msacm_main.c
1 /*
2  *      MSACM library
3  *
4  *      Copyright 1998  Patrik Stridvall
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with this library; if not, write to the Free Software
18  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19  */
20
21 #include <stdarg.h>
22
23 #include "windef.h"
24 #include "winbase.h"
25 #include "winerror.h"
26 #include "mmsystem.h"
27 #define NOBITMAP
28 #include "mmreg.h"
29 #include "msacm.h"
30 #include "msacmdrv.h"
31 #include "wineacm.h"
32 #include "wine/debug.h"
33
34 WINE_DEFAULT_DEBUG_CHANNEL(msacm);
35
36 /**************************************************************************
37  *              DllEntryPoint (MSACM.255)
38  *
39  * MSACM DLL entry point
40  *
41  */
42 BOOL WINAPI MSACM_DllEntryPoint(DWORD fdwReason, HINSTANCE16 hinstDLL, WORD ds,
43                                 WORD wHeapSize, DWORD dwReserved1, WORD wReserved2)
44 {
45     static HANDLE       hndl;
46
47     TRACE("0x%x 0x%lx\n", hinstDLL, fdwReason);
48
49     switch (fdwReason) {
50     case DLL_PROCESS_ATTACH:
51         if (!hndl && !(hndl = LoadLibraryA("MSACM32.DLL"))) {
52             ERR("Could not load sibling MsAcm32.dll\n");
53             return FALSE;
54         }
55         break;
56     case DLL_PROCESS_DETACH:
57         FreeLibrary(hndl);
58         hndl = 0;
59         break;
60     case DLL_THREAD_ATTACH:
61     case DLL_THREAD_DETACH:
62         break;
63     }
64     return TRUE;
65 }
66
67 /***********************************************************************
68  *              acmGetVersion (MSACM.7)
69  */
70 DWORD WINAPI acmGetVersion16(void)
71 {
72   return acmGetVersion();
73 }
74
75 /***********************************************************************
76  *              acmMetrics (MSACM.8)
77  */
78
79 MMRESULT16 WINAPI acmMetrics16(
80   HACMOBJ16 hao, UINT16 uMetric, LPVOID pMetric)
81 {
82   FIXME("(0x%04x, %d, %p): semi-stub\n", hao, uMetric, pMetric);
83
84   if(!hao) return acmMetrics(0, uMetric, pMetric);
85   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
86   return MMSYSERR_ERROR;
87 }
88
89 /***********************************************************************
90  *              acmDriverEnum (MSACM.10)
91  */
92 MMRESULT16 WINAPI acmDriverEnum16(
93   ACMDRIVERENUMCB16 fnCallback, DWORD dwInstance, DWORD fdwEnum)
94 {
95   FIXME("(%p, %ld, %ld): stub\n",
96     fnCallback, dwInstance, fdwEnum
97   );
98   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
99   return MMSYSERR_ERROR;
100 }
101
102 /***********************************************************************
103  *              acmDriverDetails (MSACM.11)
104  */
105
106 MMRESULT16 WINAPI acmDriverDetails16(
107   HACMDRIVERID16 hadid, LPACMDRIVERDETAILS16 padd, DWORD fdwDetails)
108 {
109   FIXME("(0x%04x, %p, %ld): stub\n", hadid, padd, fdwDetails);
110   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
111   return MMSYSERR_ERROR;
112 }
113
114 /***********************************************************************
115  *              acmDriverAdd (MSACM.12)
116  */
117 MMRESULT16 WINAPI acmDriverAdd16(
118   LPHACMDRIVERID16 phadid, HINSTANCE16 hinstModule,
119   LPARAM lParam, DWORD dwPriority, DWORD fdwAdd)
120 {
121   FIXME("(%p, 0x%04x, %ld, %ld, %ld): stub\n",
122     phadid, hinstModule, lParam, dwPriority, fdwAdd
123   );
124   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
125   return MMSYSERR_ERROR;
126 }
127
128 /***********************************************************************
129  *              acmDriverRemove (MSACM.13)
130  */
131 MMRESULT16 WINAPI acmDriverRemove16(
132   HACMDRIVERID16 hadid, DWORD fdwRemove)
133 {
134   FIXME("(0x%04x, %ld): stub\n", hadid, fdwRemove);
135   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
136   return MMSYSERR_ERROR;
137 }
138
139 /***********************************************************************
140  *              acmDriverOpen (MSACM.14)
141  */
142 MMRESULT16 WINAPI acmDriverOpen16(
143   LPHACMDRIVER16 phad, HACMDRIVERID16 hadid, DWORD fdwOpen)
144 {
145   FIXME("(%p, 0x%04x, %ld): stub\n", phad, hadid, fdwOpen);
146   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
147   return MMSYSERR_ERROR;
148 }
149
150 /***********************************************************************
151  *              acmDriverClose (MSACM.15)
152  */
153 MMRESULT16 WINAPI acmDriverClose16(
154   HACMDRIVER16 had, DWORD fdwClose)
155 {
156   FIXME("(0x%04x, %ld): stub\n", had, fdwClose);
157   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
158   return MMSYSERR_ERROR;
159 }
160
161 /***********************************************************************
162  *              acmDriverMessage (MSACM.16)
163  */
164 LRESULT WINAPI acmDriverMessage16(
165   HACMDRIVER16 had, UINT16 uMsg, LPARAM lParam1, LPARAM lParam2)
166 {
167   FIXME("(0x%04x, %d, %ld, %ld): stub\n",
168     had, uMsg, lParam1, lParam2
169   );
170   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
171   return 0;
172 }
173
174 /***********************************************************************
175  *              acmDriverID (MSACM.17)
176  */
177 MMRESULT16 WINAPI acmDriverID16(
178   HACMOBJ16 hao, LPHACMDRIVERID16 phadid, DWORD fdwDriverID)
179 {
180   FIXME("(0x%04x, %p, %ld): stub\n", hao, phadid, fdwDriverID);
181   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
182   return MMSYSERR_ERROR;
183 }
184
185 /***********************************************************************
186  *              acmDriverPriority (MSACM.18)
187  */
188 MMRESULT16 WINAPI acmDriverPriority16(
189  HACMDRIVERID16 hadid, DWORD dwPriority, DWORD fdwPriority)
190 {
191   FIXME("(0x%04x, %ld, %ld): stub\n",
192     hadid, dwPriority, fdwPriority
193   );
194   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
195   return MMSYSERR_ERROR;
196 }
197
198 /***********************************************************************
199  *              acmFormatTagDetails (MSACM.30)
200  */
201 MMRESULT16 WINAPI acmFormatTagDetails16(
202   HACMDRIVER16 had, LPACMFORMATTAGDETAILS16 paftd, DWORD fdwDetails)
203 {
204   FIXME("(0x%04x, %p, %ld): stub\n", had, paftd, fdwDetails);
205   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
206   return MMSYSERR_ERROR;
207 }
208
209 /***********************************************************************
210  *              acmFormatTagEnum (MSACM.31)
211  */
212 MMRESULT16 WINAPI acmFormatTagEnum16(
213   HACMDRIVER16 had, LPACMFORMATTAGDETAILS16 paftd,
214   ACMFORMATTAGENUMCB16 fnCallback, DWORD dwInstance, DWORD fdwEnum)
215 {
216   FIXME("(0x%04x, %p, %p, %ld, %ld): stub\n",
217     had, paftd, fnCallback, dwInstance, fdwEnum
218   );
219   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
220   return MMSYSERR_ERROR;
221 }
222
223 /***********************************************************************
224  *              acmFormatChoose (MSACM.40)
225  */
226 MMRESULT16 WINAPI acmFormatChoose16(
227   LPACMFORMATCHOOSE16 pafmtc)
228 {
229   FIXME("(%p): stub\n", pafmtc);
230   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
231   return MMSYSERR_ERROR;
232 }
233
234 /***********************************************************************
235  *              acmFormatDetails (MSACM.41)
236  */
237 MMRESULT16 WINAPI acmFormatDetails16(
238   HACMDRIVER16 had, LPACMFORMATDETAILS16 pafd, DWORD fdwDetails)
239 {
240   FIXME("(0x%04x, %p, %ld): stub\n", had, pafd, fdwDetails);
241   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
242   return MMSYSERR_ERROR;
243 }
244
245 /***********************************************************************
246  *              acmFormatEnum (MSACM.42)
247  */
248 MMRESULT16 WINAPI acmFormatEnum16(
249   HACMDRIVER16 had, LPACMFORMATDETAILS16 pafd,
250   ACMFORMATENUMCB16 fnCallback, DWORD dwInstance, DWORD fdwEnum)
251 {
252   FIXME("(0x%04x, %p, %p, %ld, %ld): stub\n",
253     had, pafd, fnCallback, dwInstance, fdwEnum
254   );
255   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
256   return MMSYSERR_ERROR;
257 }
258
259 /***********************************************************************
260  *              acmFormatSuggest (MSACM.45)
261  */
262 MMRESULT16 WINAPI acmFormatSuggest16(
263   HACMDRIVER16 had, LPWAVEFORMATEX pwfxSrc,
264   LPWAVEFORMATEX pwfxDst, DWORD cbwfxDst, DWORD fdwSuggest)
265 {
266   FIXME("(0x%04x, %p, %p, %ld, %ld): stub\n",
267     had, pwfxSrc, pwfxDst, cbwfxDst, fdwSuggest
268   );
269   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
270   return MMSYSERR_ERROR;
271 }
272
273 /***********************************************************************
274  *              acmFilterTagDetails (MSACM.50)
275  */
276 MMRESULT16 WINAPI acmFilterTagDetails16(
277   HACMDRIVER16 had, LPACMFILTERTAGDETAILS16 paftd, DWORD fdwDetails)
278 {
279   FIXME("(0x%04x, %p, %ld): stub\n", had, paftd, fdwDetails);
280   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
281   return MMSYSERR_ERROR;
282 }
283
284 /***********************************************************************
285  *              acmFilterTagEnum (MSACM.51)
286  */
287 MMRESULT16 WINAPI acmFilterTagEnum16(
288   HACMDRIVER16 had, LPACMFILTERTAGDETAILS16 paftd,
289   ACMFILTERTAGENUMCB16 fnCallback, DWORD dwInstance, DWORD fdwEnum)
290 {
291   FIXME("(0x%04x, %p, %p, %ld, %ld): stub\n",
292     had, paftd, fnCallback, dwInstance, fdwEnum
293   );
294   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
295   return MMSYSERR_ERROR;
296 }
297
298 /***********************************************************************
299  *              acmFilterChoose (MSACM.60)
300  */
301 MMRESULT16 WINAPI acmFilterChoose16(
302   LPACMFILTERCHOOSE16 pafltrc)
303 {
304   FIXME("(%p): stub\n", pafltrc);
305   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
306   return MMSYSERR_ERROR;
307 }
308
309 /***********************************************************************
310  *              acmFilterDetails (MSACM.61)
311  */
312 MMRESULT16 WINAPI acmFilterDetails16(
313   HACMDRIVER16 had, LPACMFILTERDETAILS16 pafd, DWORD fdwDetails)
314 {
315   FIXME("(0x%04x, %p, %ld): stub\n", had, pafd, fdwDetails);
316   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
317   return MMSYSERR_ERROR;
318 }
319
320 /***********************************************************************
321  *              acmFilterEnum (MSACM.62)
322  */
323 MMRESULT16 WINAPI acmFilterEnum16(
324   HACMDRIVER16 had, LPACMFILTERDETAILS16 pafd,
325   ACMFILTERENUMCB16 fnCallback, DWORD dwInstance, DWORD fdwEnum)
326 {
327   FIXME("(0x%04x, %p, %p, %ld, %ld): stub\n",
328     had, pafd, fnCallback, dwInstance, fdwEnum
329   );
330   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
331   return MMSYSERR_ERROR;
332 }
333
334 /***********************************************************************
335  *              acmStreamOpen (MSACM.70)
336  */
337 MMRESULT16 WINAPI acmStreamOpen16(
338   LPHACMSTREAM16 phas, HACMDRIVER16 had,
339   LPWAVEFORMATEX pwfxSrc, LPWAVEFORMATEX pwfxDst,
340   LPWAVEFILTER pwfltr, DWORD dwCallback,
341   DWORD dwInstance, DWORD fdwOpen)
342 {
343   FIXME("(%p, 0x%04x, %p, %p, %p, %ld, %ld, %ld): stub\n",
344     phas, had, pwfxSrc, pwfxDst, pwfltr,
345     dwCallback, dwInstance, fdwOpen
346   );
347   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
348   return MMSYSERR_ERROR;
349 }
350
351 /***********************************************************************
352  *              acmStreamClose (MSACM.71)
353  */
354 MMRESULT16 WINAPI acmStreamClose16(
355   HACMSTREAM16 has, DWORD fdwClose)
356 {
357   FIXME("(0x%04x, %ld): stub\n", has, fdwClose);
358   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
359   return MMSYSERR_ERROR;
360 }
361
362 /***********************************************************************
363  *              acmStreamSize (MSACM.72)
364  */
365 MMRESULT16 WINAPI acmStreamSize16(
366   HACMSTREAM16 has, DWORD cbInput,
367   LPDWORD pdwOutputBytes, DWORD fdwSize)
368 {
369   FIXME("(0x%04x, %ld, %p, %ld): stub\n",
370     has, cbInput, pdwOutputBytes, fdwSize
371   );
372   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
373   return MMSYSERR_ERROR;
374 }
375
376 /***********************************************************************
377  *              acmStreamConvert (MSACM.75)
378  */
379 MMRESULT16 WINAPI acmStreamConvert16(
380   HACMSTREAM16 has, LPACMSTREAMHEADER16 pash, DWORD fdwConvert)
381 {
382   FIXME("(0x%04x, %p, %ld): stub\n", has, pash, fdwConvert);
383   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
384   return MMSYSERR_ERROR;
385 }
386
387 /***********************************************************************
388  *              acmStreamReset (MSACM.76)
389  */
390 MMRESULT16 WINAPI acmStreamReset16(
391   HACMSTREAM16 has, DWORD fdwReset)
392 {
393   FIXME("(0x%04x, %ld): stub\n", has, fdwReset);
394   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
395   return MMSYSERR_ERROR;
396 }
397
398 /***********************************************************************
399  *              acmStreamPrepareHeader (MSACM.77)
400  */
401 MMRESULT16 WINAPI acmStreamPrepareHeader16(
402   HACMSTREAM16 has, LPACMSTREAMHEADER16 pash, DWORD fdwPrepare)
403 {
404   FIXME("(0x%04x, %p, %ld): stub\n", has, pash, fdwPrepare);
405   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
406   return MMSYSERR_ERROR;
407 }
408
409 /***********************************************************************
410  *              acmStreamUnprepareHeader (MSACM.78)
411  */
412 MMRESULT16 WINAPI acmStreamUnprepareHeader16(
413   HACMSTREAM16 has, LPACMSTREAMHEADER16 pash, DWORD fdwUnprepare)
414 {
415   FIXME("(0x%04x, %p, %ld): stub\n",
416     has, pash, fdwUnprepare
417   );
418   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
419   return MMSYSERR_ERROR;
420 }
421
422 /***********************************************************************
423  *              ACMAPPLICATIONEXIT (MSACM.150)
424  * FIXME
425  *   No documentation found.
426  */
427
428 /***********************************************************************
429  *              ACMHUGEPAGELOCK (MSACM.175)
430  *FIXME
431  *   No documentation found.
432  */
433
434 /***********************************************************************
435  *              ACMHUGEPAGEUNLOCK (MSACM.176)
436  * FIXME
437  *   No documentation found.
438  */
439
440 /***********************************************************************
441  *              ACMOPENCONVERSION (MSACM.200)
442  * FIXME
443  *   No documentation found.
444  */
445
446 /***********************************************************************
447  *              ACMCLOSECONVERSION (MSACM.201)
448  * FIXME
449  *   No documentation found.
450  */
451
452 /***********************************************************************
453  *              ACMCONVERT (MSACM.202)
454  * FIXME
455  *   No documentation found.
456  */
457
458 /***********************************************************************
459  *              ACMCHOOSEFORMAT (MSACM.203)
460  * FIXME
461  *   No documentation found.
462  */