Indirection for INSTR_EmulateInstruction for use by DOS code.
[wine/hacks.git] / dlls / msacm32 / msacm32_main.c
blobf1dc476afdd6cddba32edfc86d9a91029239a4ca
1 /*
2 * MSACM32 library
4 * Copyright 1998 Patrik Stridvall
5 */
7 #include "windows.h"
8 #include "winerror.h"
9 #include "wintypes.h"
10 #include "debug.h"
11 #include "mmsystem.h"
12 #include "msacm.h"
13 #include "msacmdrv.h"
14 #include "winversion.h"
16 /**********************************************************************/
18 static DWORD MSACM_dwProcessesAttached32 = 0;
20 /***********************************************************************
21 * MSACM_LibMain32 (MSACM32.init)
23 BOOL32 WINAPI MSACM32_LibMain(
24 HINSTANCE32 hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
26 switch(fdwReason)
28 case DLL_PROCESS_ATTACH:
29 if(MSACM_dwProcessesAttached32 == 0)
31 MSACM_hHeap32 = HeapCreate(0, 0x10000, 0);
32 MSACM_RegisterAllDrivers32();
34 MSACM_dwProcessesAttached32++;
35 break;
36 case DLL_PROCESS_DETACH:
37 MSACM_dwProcessesAttached32--;
38 if(MSACM_dwProcessesAttached32 == 0)
40 MSACM_UnregisterAllDrivers32();
41 HeapDestroy(MSACM_hHeap32);
42 MSACM_hHeap32 = (HANDLE32) NULL;
44 break;
45 case DLL_THREAD_ATTACH:
46 break;
47 case DLL_THREAD_DETACH:
48 break;
49 default:
50 break;
52 return TRUE;
55 /***********************************************************************
56 * XRegThunkEntry (MSACM32.1)
57 * FIXME
58 * No documentation found.
61 /***********************************************************************
62 * acmGetVersion32 (MSACM32.34)
64 DWORD WINAPI acmGetVersion32()
66 switch(VERSION_GetVersion())
68 default:
69 FIXME(msacm, "%s not supported\n", VERSION_GetVersionName());
70 case WIN95:
71 return 0x04000000; /* 4.0.0 */
72 case NT40:
73 return 0x04000565; /* 4.0.1381 */
77 /***********************************************************************
78 * acmMessage32 (MSACM32.35)
79 * FIXME
80 * No documentation found.
83 /***********************************************************************
84 * acmMetrics (MSACM32.36)
86 MMRESULT32 WINAPI acmMetrics32(
87 HACMOBJ32 hao, UINT32 uMetric, LPVOID pMetric)
89 PWINE_ACMOBJ32 pao = MSACM_GetObj32(hao);
90 BOOL32 bLocal = TRUE;
92 FIXME(msacm, "(0x%08x, %d, %p): stub\n", hao, uMetric, pMetric);
94 switch(uMetric)
96 case ACM_METRIC_COUNT_DRIVERS:
97 bLocal = FALSE;
98 case ACM_METRIC_COUNT_LOCAL_DRIVERS:
99 if(!pao)
100 return MMSYSERR_INVALHANDLE;
101 return MMSYSERR_NOTSUPPORTED;
102 case ACM_METRIC_COUNT_CODECS:
103 bLocal = FALSE;
104 case ACM_METRIC_COUNT_LOCAL_CODECS:
105 return MMSYSERR_NOTSUPPORTED;
106 case ACM_METRIC_COUNT_CONVERTERS:
107 bLocal = FALSE;
108 case ACM_METRIC_COUNT_LOCAL_CONVERTERS:
109 return MMSYSERR_NOTSUPPORTED;
110 case ACM_METRIC_COUNT_FILTERS:
111 bLocal = FALSE;
112 case ACM_METRIC_COUNT_LOCAL_FILTERS:
113 return MMSYSERR_NOTSUPPORTED;
114 case ACM_METRIC_COUNT_DISABLED:
115 bLocal = FALSE;
116 case ACM_METRIC_COUNT_LOCAL_DISABLED:
117 if(!pao)
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:
127 default:
128 return MMSYSERR_NOTSUPPORTED;
130 return MMSYSERR_NOERROR;