- Converted HACMOBJ to void*
- acmMetrics16 calls acmMetrics only if hao is NULL

diff --git a/dlls/msacm/filter.c b/dlls/msacm/filter.c
index 012bc99..1c3cfce 100644
--- a/dlls/msacm/filter.c
+++ b/dlls/msacm/filter.c
@@ -235,7 +235,7 @@
     if (had) {
 	HACMDRIVERID	hadid;
 
-	if (acmDriverID(had, &hadid, 0) != MMSYSERR_NOERROR)
+	if (acmDriverID((HACMOBJ)had, &hadid, 0) != MMSYSERR_NOERROR)
 	    return MMSYSERR_INVALHANDLE;
 	MSACM_FilterEnumHelper(MSACM_GetDriverID(hadid), had, pafd,
 			       fnCallback, dwInstance, fdwEnum);
diff --git a/dlls/msacm/format.c b/dlls/msacm/format.c
index 3635d57..2bc0ce2 100644
--- a/dlls/msacm/format.c
+++ b/dlls/msacm/format.c
@@ -509,7 +509,7 @@
     if (had) {
 	HACMDRIVERID	hadid;
 
-	if (acmDriverID(had, &hadid, 0) != MMSYSERR_NOERROR)
+	if (acmDriverID((HACMOBJ)had, &hadid, 0) != MMSYSERR_NOERROR)
 	    return MMSYSERR_INVALHANDLE;
 	MSACM_FormatEnumHelper(MSACM_GetDriverID(hadid), had, pafd, &wfxRef, 
 			       fnCallback, dwInstance, fdwEnum);
diff --git a/dlls/msacm/msacm_main.c b/dlls/msacm/msacm_main.c
index 9303b20..be5947c 100644
--- a/dlls/msacm/msacm_main.c
+++ b/dlls/msacm/msacm_main.c
@@ -76,7 +76,9 @@
 {
   FIXME("(0x%04x, %d, %p): semi-stub\n", hao, uMetric, pMetric);
 
-  return acmMetrics(hao, uMetric, pMetric);
+  if(!hao) return acmMetrics(0, uMetric, pMetric);
+  SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+  return MMSYSERR_ERROR;
 }
 
 /***********************************************************************