Added PCM converter internal driver.
A few driver handling fixes.

diff --git a/dlls/msacm/internal.c b/dlls/msacm/internal.c
index e9d2bd3..293513c 100644
--- a/dlls/msacm/internal.c
+++ b/dlls/msacm/internal.c
@@ -42,8 +42,8 @@
     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->pszDriverAlias = pszDriverAlias ? HEAP_strdupA(MSACM_hHeap, 0, pszDriverAlias) : NULL;
+    padid->pszFileName = pszFileName ? HEAP_strdupA(MSACM_hHeap, 0, pszFileName) : NULL;
     padid->hInstModule = hinstModule;
     padid->bEnabled = TRUE;
     padid->pACMDriverList = NULL;
@@ -65,7 +65,7 @@
 {
     LPSTR pszBuffer;
     DWORD dwBufferLength;
-    
+
     /* FIXME 
      *  What if the user edits system.ini while the program is running?
      *  Does Windows handle that?
@@ -85,8 +85,9 @@
 		char *s2 = s;
 		while (*s2 != '\0' && *s2 != '=') s2++;
 		if (*s2) {
-		    *s2++ = '\0';
-		    MSACM_RegisterDriver(s, s2, 0);
+		    *s2 = '\0';
+		    MSACM_RegisterDriver(s, s2 + 1, 0);
+		    *s2 = '=';
 		}
 	    }  
 	    s += strlen(s) + 1; /* Either next char or \0 */
@@ -94,6 +95,8 @@
     }
     
     HeapFree(MSACM_hHeap, 0, pszBuffer);
+
+    MSACM_RegisterDriver("msacm32.dll", "msacm32.dll", 0);
 }
 
 /***********************************************************************