Forced loading of msacm32 when msacm is loaded.
Added msacm DLL pair in config files.
Added some dumb calls from 16 to 32.
diff --git a/dlls/msacm/msacm.spec b/dlls/msacm/msacm.spec
index 7cbd40d..1ac566b 100644
--- a/dlls/msacm/msacm.spec
+++ b/dlls/msacm/msacm.spec
@@ -41,3 +41,4 @@
201 stub ACMCLOSECONVERSION
202 stub ACMCONVERT
203 stub ACMCHOOSEFORMAT
+255 pascal DllEntryPoint(long word word word long word) MSACM_DllEntryPoint
diff --git a/dlls/msacm/msacm_main.c b/dlls/msacm/msacm_main.c
index 8c860ab..ab493f5 100644
--- a/dlls/msacm/msacm_main.c
+++ b/dlls/msacm/msacm_main.c
@@ -14,14 +14,43 @@
DEFAULT_DEBUG_CHANNEL(msacm);
+/**************************************************************************
+ * MSACM_LibMain [EntryPoint]
+ *
+ * MSACM DLL entry point
+ *
+ */
+BOOL WINAPI MSACM_DllEntryPoint(DWORD fdwReason, HINSTANCE16 hinstDLL, WORD ds,
+ WORD wHeapSize, DWORD dwReserved1, WORD wReserved2)
+{
+ static HANDLE hndl;
+
+ TRACE("0x%x 0x%lx\n", hinstDLL, fdwReason);
+
+ switch (fdwReason) {
+ case DLL_PROCESS_ATTACH:
+ if (!hndl && !(hndl = LoadLibraryA("MSACM32.DLL"))) {
+ ERR("Could not load sibling MsAcm32.dll\n");
+ return FALSE;
+ }
+ break;
+ case DLL_PROCESS_DETACH:
+ FreeLibrary(hndl);
+ hndl = 0;
+ break;
+ case DLL_THREAD_ATTACH:
+ case DLL_THREAD_DETACH:
+ break;
+ }
+ return TRUE;
+}
+
/***********************************************************************
* acmGetVersion (MSACM.7)
*/
-DWORD WINAPI acmGetVersion16()
+DWORD WINAPI acmGetVersion16(void)
{
- FIXME("(): stub\n");
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0; /* FIXME */
+ return acmGetVersion();
}
/***********************************************************************
@@ -31,9 +60,9 @@
MMRESULT16 WINAPI acmMetrics16(
HACMOBJ16 hao, UINT16 uMetric, LPVOID pMetric)
{
- FIXME("(0x%04x, %d, %p): stub\n", hao, uMetric, pMetric);
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return MMSYSERR_ERROR;
+ FIXME("(0x%04x, %d, %p): semi-stub\n", hao, uMetric, pMetric);
+
+ return acmMetrics(hao, uMetric, pMetric);
}
/***********************************************************************
diff --git a/documentation/samples/config b/documentation/samples/config
index b939f30..d7e9c77 100644
--- a/documentation/samples/config
+++ b/documentation/samples/config
@@ -101,6 +101,8 @@
"mciavi.drv" = "native, builtin"
"mcianim.drv" = "native, builtin"
"msacm.drv" = "builtin, native"
+"msacm" = "builtin, native"
+"msacm32" = "builtin, native"
"midimap.drv" = "builtin, native"
"wnaspi32" = "builtin"
"icmp" = "builtin"
diff --git a/loader/loadorder.c b/loader/loadorder.c
index 9e1a1f6..5d5e0fc 100644
--- a/loader/loadorder.c
+++ b/loader/loadorder.c
@@ -60,6 +60,7 @@
{"mciwave.drv", "builtin,native"},
{"mciavi.drv,mcianim.drv", "native,builtin"},
{"msacm.drv,midimap.drv", "builtin,native"},
+ {"msacm,msacm32", "builtin,native"},
{"opengl32", "builtin,native"},
/* we have to use libglideXx.so instead of glideXx.dll ... */
{"glide2x,glide3x", "so,native"},
@@ -86,6 +87,7 @@
{ "lzexpand", "lz32" },
{ "mmsystem", "winmm" },
{ "msvideo", "msvfw32" },
+ { "msacm", "msacm32" },
{ "winsock", "wsock32" },
{ NULL, NULL }
};