1 /* -*- tab-width: 8; c-basic-offset: 4 -*- */
6 * Copyright 1998 Patrik Stridvall
13 #include "debugtools.h"
17 #include "winversion.h"
19 DEFAULT_DEBUG_CHANNEL(msacm)
21 /**********************************************************************/
23 static DWORD MSACM_dwProcessesAttached = 0;
25 /***********************************************************************
26 * MSACM_LibMain32 (MSACM32.init)
28 BOOL WINAPI MSACM32_LibMain(HINSTANCE hInstDLL, DWORD fdwReason, LPVOID lpvReserved)
30 TRACE("0x%x 0x%lx %p\n", hInstDLL, fdwReason, lpvReserved);
33 case DLL_PROCESS_ATTACH:
34 if (MSACM_dwProcessesAttached == 0) {
35 MSACM_hHeap = HeapCreate(0, 0x10000, 0);
36 MSACM_RegisterAllDrivers();
38 MSACM_dwProcessesAttached++;
40 case DLL_PROCESS_DETACH:
41 MSACM_dwProcessesAttached--;
42 if (MSACM_dwProcessesAttached == 0) {
43 MSACM_UnregisterAllDrivers();
44 HeapDestroy(MSACM_hHeap);
45 MSACM_hHeap = (HANDLE) NULL;
48 case DLL_THREAD_ATTACH:
50 case DLL_THREAD_DETACH:
58 /***********************************************************************
59 * XRegThunkEntry (MSACM32.1)
61 * No documentation found.
64 /***********************************************************************
65 * acmGetVersion32 (MSACM32.34)
67 DWORD WINAPI acmGetVersion(void)
69 switch (VERSION_GetVersion()) {
71 FIXME("%s not supported\n", VERSION_GetVersionName());
73 return 0x04000000; /* 4.0.0 */
75 return 0x04000565; /* 4.0.1381 */
79 /***********************************************************************
80 * acmMessage32 (MSACM32.35)
82 * No documentation found.
85 /***********************************************************************
86 * acmMetrics (MSACM32.36)
88 MMRESULT WINAPI acmMetrics(HACMOBJ hao, UINT uMetric, LPVOID pMetric)
90 PWINE_ACMOBJ pao = MSACM_GetObj(hao);
93 FIXME("(0x%08x, %d, %p): stub\n", hao, uMetric, pMetric);
96 case ACM_METRIC_COUNT_DRIVERS:
98 case ACM_METRIC_COUNT_LOCAL_DRIVERS:
100 return MMSYSERR_INVALHANDLE;
101 return MMSYSERR_NOTSUPPORTED;
102 case ACM_METRIC_COUNT_CODECS:
104 case ACM_METRIC_COUNT_LOCAL_CODECS:
105 return MMSYSERR_NOTSUPPORTED;
106 case ACM_METRIC_COUNT_CONVERTERS:
108 case ACM_METRIC_COUNT_LOCAL_CONVERTERS:
109 return MMSYSERR_NOTSUPPORTED;
110 case ACM_METRIC_COUNT_FILTERS:
112 case ACM_METRIC_COUNT_LOCAL_FILTERS:
113 return MMSYSERR_NOTSUPPORTED;
114 case ACM_METRIC_COUNT_DISABLED:
116 case ACM_METRIC_COUNT_LOCAL_DISABLED:
118 return MMSYSERR_INVALHANDLE;
119 return MMSYSERR_NOTSUPPORTED;
120 case ACM_METRIC_COUNT_HARDWARE:
121 case ACM_METRIC_HARDWARE_WAVE_INPUT:
122 case ACM_METRIC_HARDWARE_WAVE_OUTPUT:
123 case ACM_METRIC_MAX_SIZE_FORMAT:
124 case ACM_METRIC_MAX_SIZE_FILTER:
125 case ACM_METRIC_DRIVER_SUPPORT:
126 case ACM_METRIC_DRIVER_PRIORITY:
128 return MMSYSERR_NOTSUPPORTED;
130 return MMSYSERR_NOERROR;