Implementation of WM_GETTEXT and WM_GETTEXTLENGTH in tooltips.
[wine] / dlls / msacm32 / msacm32_main.c
1 /*
2  *      MSACM32 library
3  *
4  *      Copyright 1998  Patrik Stridvall
5  */
6
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"
14
15 DEFAULT_DEBUG_CHANNEL(msacm)
16
17 /**********************************************************************/
18
19 static DWORD MSACM_dwProcessesAttached = 0;
20
21 /***********************************************************************
22  *           MSACM_LibMain32 (MSACM32.init) 
23  */
24 BOOL WINAPI MSACM32_LibMain(
25   HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
26 {
27   switch(fdwReason)
28     {
29     case DLL_PROCESS_ATTACH:
30       if(MSACM_dwProcessesAttached == 0)
31         {
32           MSACM_hHeap = HeapCreate(0, 0x10000, 0);
33           MSACM_RegisterAllDrivers();
34         }
35       MSACM_dwProcessesAttached++;
36       break;
37     case DLL_PROCESS_DETACH:
38       MSACM_dwProcessesAttached--;
39       if(MSACM_dwProcessesAttached == 0)
40         {
41           MSACM_UnregisterAllDrivers();
42           HeapDestroy(MSACM_hHeap);
43           MSACM_hHeap = (HANDLE) NULL;
44         }
45       break;
46     case DLL_THREAD_ATTACH:
47       break;
48     case DLL_THREAD_DETACH:
49       break;
50     default:
51       break;
52     }
53   return TRUE;
54 }
55
56 /***********************************************************************
57  *           XRegThunkEntry (MSACM32.1)
58  * FIXME
59  *   No documentation found.
60  */
61
62 /***********************************************************************
63  *           acmGetVersion32 (MSACM32.34)
64  */
65 DWORD WINAPI acmGetVersion()
66 {
67   switch(VERSION_GetVersion()) 
68     {
69     default: 
70       FIXME(msacm, "%s not supported\n", VERSION_GetVersionName());
71     case WIN95:
72       return 0x04000000; /* 4.0.0 */
73     case NT40:
74       return 0x04000565; /* 4.0.1381 */
75     }
76 }
77
78 /***********************************************************************
79  *           acmMessage32 (MSACM32.35)
80  * FIXME
81  *   No documentation found.
82  */
83
84 /***********************************************************************
85  *           acmMetrics (MSACM32.36)
86  */
87 MMRESULT WINAPI acmMetrics(
88   HACMOBJ hao, UINT uMetric, LPVOID  pMetric)
89 {
90   PWINE_ACMOBJ pao = MSACM_GetObj(hao);
91   BOOL bLocal = TRUE;
92
93   FIXME(msacm, "(0x%08x, %d, %p): stub\n", hao, uMetric, pMetric);
94
95   switch(uMetric)
96     {
97     case ACM_METRIC_COUNT_DRIVERS:
98       bLocal = FALSE;
99     case ACM_METRIC_COUNT_LOCAL_DRIVERS:
100       if(!pao)
101         return MMSYSERR_INVALHANDLE;  
102       return MMSYSERR_NOTSUPPORTED;
103     case ACM_METRIC_COUNT_CODECS:
104       bLocal = FALSE;
105     case ACM_METRIC_COUNT_LOCAL_CODECS:
106       return MMSYSERR_NOTSUPPORTED;
107     case ACM_METRIC_COUNT_CONVERTERS:
108       bLocal = FALSE;
109     case ACM_METRIC_COUNT_LOCAL_CONVERTERS:
110       return MMSYSERR_NOTSUPPORTED;
111     case ACM_METRIC_COUNT_FILTERS:
112       bLocal = FALSE;
113     case ACM_METRIC_COUNT_LOCAL_FILTERS:
114       return MMSYSERR_NOTSUPPORTED;
115     case ACM_METRIC_COUNT_DISABLED:
116       bLocal = FALSE;
117     case ACM_METRIC_COUNT_LOCAL_DISABLED:
118       if(!pao)
119         return MMSYSERR_INVALHANDLE;  
120       return MMSYSERR_NOTSUPPORTED;
121     case ACM_METRIC_COUNT_HARDWARE:
122     case ACM_METRIC_HARDWARE_WAVE_INPUT:
123     case ACM_METRIC_HARDWARE_WAVE_OUTPUT:
124     case ACM_METRIC_MAX_SIZE_FORMAT:
125     case ACM_METRIC_MAX_SIZE_FILTER:
126     case ACM_METRIC_DRIVER_SUPPORT:
127     case ACM_METRIC_DRIVER_PRIORITY:
128     default:
129       return MMSYSERR_NOTSUPPORTED;
130     }
131   return MMSYSERR_NOERROR;
132 }