Implemented most of '*Format*' API.
Improved internal object and messages handling.
Started some '*Filter*' functions.
Fixed standard headers for Winelib.
Fixed acmMetrics.
diff --git a/dlls/msacm/internal.c b/dlls/msacm/internal.c
index 9eb235d..8c8c51a 100644
--- a/dlls/msacm/internal.c
+++ b/dlls/msacm/internal.c
@@ -30,7 +30,7 @@
PWINE_ACMDRIVERID MSACM_pLastACMDriverID = NULL;
/***********************************************************************
- * MSACM_RegisterDriver32()
+ * MSACM_RegisterDriver()
*/
PWINE_ACMDRIVERID MSACM_RegisterDriver(LPSTR pszDriverAlias, LPSTR pszFileName,
HINSTANCE hinstModule)
@@ -40,6 +40,8 @@
TRACE("('%s', '%s', 0x%08x)\n", pszDriverAlias, pszFileName, hinstModule);
padid = (PWINE_ACMDRIVERID) HeapAlloc(MSACM_hHeap, 0, sizeof(WINE_ACMDRIVERID));
+ padid->obj.dwType = WINE_ACMOBJ_DRIVERID;
+ padid->obj.pACMDriverID = padid;
padid->pszDriverAlias = HEAP_strdupA(MSACM_hHeap, 0, pszDriverAlias);
padid->pszFileName = HEAP_strdupA(MSACM_hHeap, 0, pszFileName);
padid->hInstModule = hinstModule;
@@ -57,7 +59,7 @@
}
/***********************************************************************
- * MSACM_RegisterAllDrivers32()
+ * MSACM_RegisterAllDrivers()
*/
void MSACM_RegisterAllDrivers(void)
{
@@ -95,7 +97,7 @@
}
/***********************************************************************
- * MSACM_UnregisterDriver32()
+ * MSACM_UnregisterDriver()
*/
PWINE_ACMDRIVERID MSACM_UnregisterDriver(PWINE_ACMDRIVERID p)
{
@@ -127,7 +129,7 @@
}
/***********************************************************************
- * MSACM_UnregisterAllDrivers32()
+ * MSACM_UnregisterAllDrivers()
* FIXME
* Where should this function be called?
*/
@@ -139,27 +141,40 @@
}
/***********************************************************************
- * MSACM_GetDriverID32()
+ * MSACM_GetObj()
+ */
+PWINE_ACMOBJ MSACM_GetObj(HACMOBJ hObj, DWORD type)
+{
+ PWINE_ACMOBJ pao = (PWINE_ACMOBJ)hObj;
+
+ if (IsBadReadPtr(pao, sizeof(WINE_ACMOBJ)) ||
+ ((type != WINE_ACMOBJ_DONTCARE) && (type != pao->dwType)))
+ return NULL;
+ return pao;
+}
+
+/***********************************************************************
+ * MSACM_GetDriverID()
*/
PWINE_ACMDRIVERID MSACM_GetDriverID(HACMDRIVERID hDriverID)
{
- return (PWINE_ACMDRIVERID)hDriverID;
+ return (PWINE_ACMDRIVERID)MSACM_GetObj((HACMOBJ)hDriverID, WINE_ACMOBJ_DRIVERID);
}
/***********************************************************************
- * MSACM_GetDriver32()
+ * MSACM_GetDriver()
*/
PWINE_ACMDRIVER MSACM_GetDriver(HACMDRIVER hDriver)
{
- return (PWINE_ACMDRIVER)hDriver;
+ return (PWINE_ACMDRIVER)MSACM_GetObj((HACMOBJ)hDriver, WINE_ACMOBJ_DRIVER);
}
/***********************************************************************
- * MSACM_GetObj32()
+ * MSACM_Message()
*/
-PWINE_ACMOBJ MSACM_GetObj(HACMOBJ hObj)
+MMRESULT MSACM_Message(HACMDRIVER had, UINT uMsg, LPARAM lParam1, LPARAM lParam2)
{
- return (PWINE_ACMOBJ)hObj;
+ PWINE_ACMDRIVER pad = MSACM_GetDriver(had);
+
+ return pad ? SendDriverMessage(pad->hDrvr, uMsg, lParam1, lParam2) : MMSYSERR_INVALHANDLE;
}
-
-