Merged Linux/FreeBSD reentrant errno handler, added Solaris.
[wine/testsucceed.git] / dlls / msacm32 / msacm32_main.c
blob739f3caca4a96f20162ddd26b016529bd4f900ff
1 /*
2 * MSACM32 library
4 * Copyright 1998 Patrik Stridvall
5 */
7 #include "winbase.h"
8 #include "winerror.h"
9 #include "windef.h"
10 #include "debug.h"
11 #include "msacm.h"
12 #include "msacmdrv.h"
13 #include "winversion.h"
15 /**********************************************************************/
17 static DWORD MSACM_dwProcessesAttached = 0;
19 /***********************************************************************
20 * MSACM_LibMain32 (MSACM32.init)
22 BOOL WINAPI MSACM32_LibMain(
23 HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
25 switch(fdwReason)
27 case DLL_PROCESS_ATTACH:
28 if(MSACM_dwProcessesAttached == 0)
30 MSACM_hHeap = HeapCreate(0, 0x10000, 0);
31 MSACM_RegisterAllDrivers();
33 MSACM_dwProcessesAttached++;
34 break;
35 case DLL_PROCESS_DETACH:
36 MSACM_dwProcessesAttached--;
37 if(MSACM_dwProcessesAttached == 0)
39 MSACM_UnregisterAllDrivers();
40 HeapDestroy(MSACM_hHeap);
41 MSACM_hHeap = (HANDLE) NULL;
43 break;
44 case DLL_THREAD_ATTACH:
45 break;
46 case DLL_THREAD_DETACH:
47 break;
48 default:
49 break;
51 return TRUE;
54 /***********************************************************************
55 * XRegThunkEntry (MSACM32.1)
56 * FIXME
57 * No documentation found.
60 /***********************************************************************
61 * acmGetVersion32 (MSACM32.34)
63 DWORD WINAPI acmGetVersion()
65 switch(VERSION_GetVersion())
67 default:
68 FIXME(msacm, "%s not supported\n", VERSION_GetVersionName());
69 case WIN95:
70 return 0x04000000; /* 4.0.0 */
71 case NT40:
72 return 0x04000565; /* 4.0.1381 */
76 /***********************************************************************
77 * acmMessage32 (MSACM32.35)
78 * FIXME
79 * No documentation found.
82 /***********************************************************************
83 * acmMetrics (MSACM32.36)
85 MMRESULT WINAPI acmMetrics(
86 HACMOBJ hao, UINT uMetric, LPVOID pMetric)
88 PWINE_ACMOBJ pao = MSACM_GetObj(hao);
89 BOOL bLocal = TRUE;
91 FIXME(msacm, "(0x%08x, %d, %p): stub\n", hao, uMetric, pMetric);
93 switch(uMetric)
95 case ACM_METRIC_COUNT_DRIVERS:
96 bLocal = FALSE;
97 case ACM_METRIC_COUNT_LOCAL_DRIVERS:
98 if(!pao)
99 return MMSYSERR_INVALHANDLE;
100 return MMSYSERR_NOTSUPPORTED;
101 case ACM_METRIC_COUNT_CODECS:
102 bLocal = FALSE;
103 case ACM_METRIC_COUNT_LOCAL_CODECS:
104 return MMSYSERR_NOTSUPPORTED;
105 case ACM_METRIC_COUNT_CONVERTERS:
106 bLocal = FALSE;
107 case ACM_METRIC_COUNT_LOCAL_CONVERTERS:
108 return MMSYSERR_NOTSUPPORTED;
109 case ACM_METRIC_COUNT_FILTERS:
110 bLocal = FALSE;
111 case ACM_METRIC_COUNT_LOCAL_FILTERS:
112 return MMSYSERR_NOTSUPPORTED;
113 case ACM_METRIC_COUNT_DISABLED:
114 bLocal = FALSE;
115 case ACM_METRIC_COUNT_LOCAL_DISABLED:
116 if(!pao)
117 return MMSYSERR_INVALHANDLE;
118 return MMSYSERR_NOTSUPPORTED;
119 case ACM_METRIC_COUNT_HARDWARE:
120 case ACM_METRIC_HARDWARE_WAVE_INPUT:
121 case ACM_METRIC_HARDWARE_WAVE_OUTPUT:
122 case ACM_METRIC_MAX_SIZE_FORMAT:
123 case ACM_METRIC_MAX_SIZE_FILTER:
124 case ACM_METRIC_DRIVER_SUPPORT:
125 case ACM_METRIC_DRIVER_PRIORITY:
126 default:
127 return MMSYSERR_NOTSUPPORTED;
129 return MMSYSERR_NOERROR;