dsound remove wine specific DRV_QUERYDSOUNDGUID message

Robert Reif reif at earthlink.net
Thu Aug 19 17:52:39 CDT 2004


Remove wine specific DRV_QUERYDSOUNDGUID message
and calculate it in dsound.dll (like in 2k/xp).
-------------- next part --------------
Index: dlls/dsound/capture.c
===================================================================
RCS file: /home/wine/wine/dlls/dsound/capture.c,v
retrieving revision 1.28
diff -u -r1.28 capture.c
--- dlls/dsound/capture.c	18 Aug 2004 00:30:37 -0000	1.28
+++ dlls/dsound/capture.c	19 Aug 2004 22:46:26 -0000
@@ -80,7 +80,6 @@
 static IDirectSoundFullDuplexVtbl dsfdvt;
 
 static IDirectSoundCaptureImpl*       dsound_capture = NULL;
-static GUID                           capture_guids[MAXWAVEDRIVERS];
 
 static const char * captureStateString[] = {
     "STATE_STOPPED",
@@ -197,20 +196,16 @@
     devs = waveInGetNumDevs();
     if (devs > 0) {
 	if (GetDeviceID(&DSDEVID_DefaultCapture, &guid) == DS_OK) {
-	    GUID temp;
     	    for (wid = 0; wid < devs; ++wid) {
-		err = mmErr(waveInMessage((HWAVEIN)wid,DRV_QUERYDSOUNDGUID,(DWORD)&temp,0));
-		if (err == DS_OK) {
-		    if (IsEqualGUID( &guid, &temp ) ) {
-			err = mmErr(waveInMessage((HWAVEIN)wid,DRV_QUERYDSOUNDDESC,(DWORD)&desc,0));
-	    		if (err == DS_OK) {
-			    TRACE("calling lpDSEnumCallback(NULL,\"%s\",\"%s\",%p)\n",
-		    		"Primary Sound Capture Driver",desc.szDrvName,lpContext);
-			    if (lpDSEnumCallback(NULL, "Primary Sound Capture Driver", desc.szDrvName, lpContext) == FALSE)
-				return DS_OK;
-			}
-		    }
-		}
+                if (IsEqualGUID( &guid, &capture_guids[wid] ) ) {
+                    err = mmErr(waveInMessage((HWAVEIN)wid,DRV_QUERYDSOUNDDESC,(DWORD)&desc,0));
+                    if (err == DS_OK) {
+                        TRACE("calling lpDSEnumCallback(NULL,\"%s\",\"%s\",%p)\n",
+                              "Primary Sound Capture Driver",desc.szDrvName,lpContext);
+                        if (lpDSEnumCallback(NULL, "Primary Sound Capture Driver", desc.szDrvName, lpContext) == FALSE)
+                            return DS_OK;
+                    }
+                }
 	    }
 	}
     }
@@ -218,13 +213,10 @@
     for (wid = 0; wid < devs; ++wid) {
 	err = mmErr(waveInMessage((HWAVEIN)wid,DRV_QUERYDSOUNDDESC,(DWORD)&desc,0));
 	if (err == DS_OK) {
-	    err = mmErr(waveInMessage((HWAVEIN)wid,DRV_QUERYDSOUNDGUID,(DWORD)&capture_guids[wid],0));
-	    if (err == DS_OK) {
-		TRACE("calling lpDSEnumCallback(%s,\"%s\",\"%s\",%p)\n",
-		    debugstr_guid(&capture_guids[wid]),desc.szDesc,desc.szDrvName,lpContext);
-		if (lpDSEnumCallback(&capture_guids[wid], desc.szDesc, desc.szDrvName, lpContext) == FALSE)
-		    return DS_OK;
-	    }
+            TRACE("calling lpDSEnumCallback(%s,\"%s\",\"%s\",%p)\n",
+                  debugstr_guid(&capture_guids[wid]),desc.szDesc,desc.szDrvName,lpContext);
+            if (lpDSEnumCallback(&capture_guids[wid], desc.szDesc, desc.szDrvName, lpContext) == FALSE)
+                return DS_OK;
 	} 
     }
 
@@ -266,24 +258,20 @@
     devs = waveInGetNumDevs();
     if (devs > 0) {
 	if (GetDeviceID(&DSDEVID_DefaultCapture, &guid) == DS_OK) {
-	    GUID temp;
     	    for (wid = 0; wid < devs; ++wid) {
-		err = mmErr(waveInMessage((HWAVEIN)wid,DRV_QUERYDSOUNDGUID,(DWORD)&temp,0));
-		if (err == DS_OK) {
-		    if (IsEqualGUID( &guid, &temp ) ) {
-			err = mmErr(waveInMessage((HWAVEIN)wid,DRV_QUERYDSOUNDDESC,(DWORD)&desc,0));
-	    		if (err == DS_OK) {
-			    TRACE("calling lpDSEnumCallback(NULL,\"%s\",\"%s\",%p)\n",
-		    		"Primary Sound Capture Driver",desc.szDrvName,lpContext);
-			    MultiByteToWideChar( CP_ACP, 0, "Primary Sound Capture Driver", -1, 
-			        wDesc, sizeof(wDesc)/sizeof(WCHAR) );
-			    MultiByteToWideChar( CP_ACP, 0, desc.szDrvName, -1, 
-		    	        wName, sizeof(wName)/sizeof(WCHAR) );
-			    if (lpDSEnumCallback(NULL, wDesc, wName, lpContext) == FALSE)
-				return DS_OK;
-			}
-		    }
-		}
+                if (IsEqualGUID( &guid, &capture_guids[wid] ) ) {
+                    err = mmErr(waveInMessage((HWAVEIN)wid,DRV_QUERYDSOUNDDESC,(DWORD)&desc,0));
+                    if (err == DS_OK) {
+                        TRACE("calling lpDSEnumCallback(NULL,\"%s\",\"%s\",%p)\n",
+                              "Primary Sound Capture Driver",desc.szDrvName,lpContext);
+                        MultiByteToWideChar( CP_ACP, 0, "Primary Sound Capture Driver", -1, 
+                                             wDesc, sizeof(wDesc)/sizeof(WCHAR) );
+                        MultiByteToWideChar( CP_ACP, 0, desc.szDrvName, -1, 
+                                             wName, sizeof(wName)/sizeof(WCHAR) );
+                        if (lpDSEnumCallback(NULL, wDesc, wName, lpContext) == FALSE)
+                            return DS_OK;
+                    }
+                }
 	    }
 	}
     }
@@ -291,17 +279,14 @@
     for (wid = 0; wid < devs; ++wid) {
 	err = mmErr(waveInMessage((HWAVEIN)wid,DRV_QUERYDSOUNDDESC,(DWORD)&desc,0));
 	if (err == DS_OK) {
-	    err = mmErr(waveInMessage((HWAVEIN)wid,DRV_QUERYDSOUNDGUID,(DWORD)&capture_guids[wid],0));
-	    if (err == DS_OK) {
-		TRACE("calling lpDSEnumCallback(%s,\"%s\",\"%s\",%p)\n",
-		    debugstr_guid(&capture_guids[wid]),desc.szDesc,desc.szDrvName,lpContext);
-		MultiByteToWideChar( CP_ACP, 0, desc.szDesc, -1, 
-		    wDesc, sizeof(wDesc)/sizeof(WCHAR) );
-		MultiByteToWideChar( CP_ACP, 0, desc.szDrvName, -1, 
-		    wName, sizeof(wName)/sizeof(WCHAR) );
-		if (lpDSEnumCallback((LPGUID)&capture_guids[wid], wDesc, wName, lpContext) == FALSE)
-		    return DS_OK;
-	    }
+            TRACE("calling lpDSEnumCallback(%s,\"%s\",\"%s\",%p)\n",
+                  debugstr_guid(&capture_guids[wid]),desc.szDesc,desc.szDrvName,lpContext);
+            MultiByteToWideChar( CP_ACP, 0, desc.szDesc, -1, 
+                                 wDesc, sizeof(wDesc)/sizeof(WCHAR) );
+            MultiByteToWideChar( CP_ACP, 0, desc.szDrvName, -1, 
+                                 wName, sizeof(wName)/sizeof(WCHAR) );
+            if (lpDSEnumCallback((LPGUID)&capture_guids[wid], wDesc, wName, lpContext) == FALSE)
+                return DS_OK;
 	} 
     }
 
@@ -552,13 +537,7 @@
 
     /* enumerate WINMM audio devices and find the one we want */
     for (wid=0; wid<widn; wid++) {
-	GUID guid;
-	err = mmErr(waveInMessage((HWAVEIN)wid,DRV_QUERYDSOUNDGUID,(DWORD)(&guid),0));
-	if (err != DS_OK) {
-	    WARN("waveInMessage failed; err=%lx\n",err);
-	    return err;
-	}
-    	if (IsEqualGUID( lpcGUID, &guid) ) {
+    	if (IsEqualGUID( lpcGUID, &capture_guids[wid]) ) {
 	    err = DS_OK;
 	    break;
 	}
Index: dlls/dsound/dsound.c
===================================================================
RCS file: /home/wine/wine/dlls/dsound/dsound.c,v
retrieving revision 1.14
diff -u -r1.14 dsound.c
--- dlls/dsound/dsound.c	18 Aug 2004 00:30:37 -0000	1.14
+++ dlls/dsound/dsound.c	19 Aug 2004 22:46:27 -0000
@@ -734,7 +734,7 @@
     LPCGUID lpcGUID,
     LPDIRECTSOUND8 * ppDS)
 {
-    HRESULT err = DSERR_INVALIDPARAM;
+    HRESULT err;
     PIDSDRIVER drv = NULL;
     IDirectSoundImpl* pDS;
     unsigned wod, wodn;
@@ -752,25 +752,10 @@
     TRACE(" expecting GUID %s.\n", debugstr_guid(lpcGUID));
 
     for (wod=0; wod<wodn; wod++) {
-        GUID guid;
-        err = mmErr(waveOutMessage((HWAVEOUT)wod,DRV_QUERYDSOUNDGUID,(DWORD)(&guid),0));
-        if (err != DS_OK) {
-            WARN("waveOutMessage failed; err=%lx\n",err);
-            *ppDS = NULL;
-            return err;
-        }
-        TRACE("got GUID %s for wod %d.\n", debugstr_guid(&guid), wod);
-        if (IsEqualGUID( lpcGUID, &guid)) {
-            err = DS_OK;
+        if (IsEqualGUID( lpcGUID, &renderer_guids[wod])) {
             found = TRUE;
             break;
         }
-    }
-
-    if (err != DS_OK) {
-        WARN("invalid parameter\n");
-        *ppDS = NULL;
-        return DSERR_INVALIDPARAM;
     }
 
     if (found == FALSE) {
Index: dlls/dsound/dsound_main.c
===================================================================
RCS file: /home/wine/wine/dlls/dsound/dsound_main.c,v
retrieving revision 1.104
diff -u -r1.104 dsound_main.c
--- dlls/dsound/dsound_main.c	12 Aug 2004 23:00:58 -0000	1.104
+++ dlls/dsound/dsound_main.c	19 Aug 2004 22:46:28 -0000
@@ -86,7 +86,8 @@
 #define DS_SND_QUEUE_MIN 12 /* min number of fragments to prebuffer */
 
 IDirectSoundImpl*	dsound = NULL;
-static GUID             device_guids[MAXWAVEDRIVERS];
+GUID                    renderer_guids[MAXWAVEDRIVERS];
+GUID                    capture_guids[MAXWAVEDRIVERS];
 
 HRESULT mmErr(UINT err)
 {
@@ -283,25 +284,17 @@
     }
 
     if ( IsEqualGUID( &DSDEVID_DefaultPlayback, pGuidSrc ) ||
-    	IsEqualGUID( &DSDEVID_DefaultVoicePlayback, pGuidSrc ) ) {
-	GUID guid;
-	int err = mmErr(waveOutMessage((HWAVEOUT)ds_default_playback,DRV_QUERYDSOUNDGUID,(DWORD)&guid,0));
-	if (err == DS_OK) {
-	    memcpy(pGuidDest, &guid, sizeof(GUID));
-            TRACE("returns %s\n", get_device_id(pGuidDest));
-	    return DS_OK;
-	}
+    	 IsEqualGUID( &DSDEVID_DefaultVoicePlayback, pGuidSrc ) ) {
+	memcpy(pGuidDest, &renderer_guids[ds_default_playback], sizeof(GUID));
+        TRACE("returns %s\n", get_device_id(pGuidDest));
+	return DS_OK;
     }
 
     if ( IsEqualGUID( &DSDEVID_DefaultCapture, pGuidSrc ) ||
-    	IsEqualGUID( &DSDEVID_DefaultVoiceCapture, pGuidSrc ) ) {
-	GUID guid;
-	int err = mmErr(waveInMessage((HWAVEIN)ds_default_capture,DRV_QUERYDSOUNDGUID,(DWORD)&guid,0));
-	if (err == DS_OK) {
-	    memcpy(pGuidDest, &guid, sizeof(GUID));
-            TRACE("returns %s\n", get_device_id(pGuidDest));
-	    return DS_OK;
-	}
+    	 IsEqualGUID( &DSDEVID_DefaultVoiceCapture, pGuidSrc ) ) {
+	memcpy(pGuidDest, &capture_guids[ds_default_capture], sizeof(GUID));
+        TRACE("returns %s\n", get_device_id(pGuidDest));
+	return DS_OK;
     }
 
     memcpy(pGuidDest, pGuidSrc, sizeof(GUID));
@@ -344,18 +337,14 @@
     devs = waveOutGetNumDevs();
     if (devs > 0) {
 	if (GetDeviceID(&DSDEVID_DefaultPlayback, &guid) == DS_OK) {
-	    GUID temp;
 	    for (wod = 0; wod < devs; ++wod) {
-		err = mmErr(waveOutMessage((HWAVEOUT)wod,DRV_QUERYDSOUNDGUID,(DWORD)&temp,0));
-		if (err == DS_OK) {
-		    if (IsEqualGUID( &guid, &temp ) ) {
-			err = mmErr(waveOutMessage((HWAVEOUT)wod,DRV_QUERYDSOUNDDESC,(DWORD)&desc,0));
-			if (err == DS_OK) {
-			    TRACE("calling lpDSEnumCallback(NULL,\"%s\",\"%s\",%p)\n",
-				"Primary Sound Driver",desc.szDrvName,lpContext);
-			    if (lpDSEnumCallback(NULL, "Primary Sound Driver", desc.szDrvName, lpContext) == FALSE)
-				return DS_OK;
-			}
+                if (IsEqualGUID( &guid, &renderer_guids[wod]) ) {
+                    err = mmErr(waveOutMessage((HWAVEOUT)wod,DRV_QUERYDSOUNDDESC,(DWORD)&desc,0));
+                    if (err == DS_OK) {
+                        TRACE("calling lpDSEnumCallback(NULL,\"%s\",\"%s\",%p)\n",
+                              "Primary Sound Driver",desc.szDrvName,lpContext);
+                        if (lpDSEnumCallback(NULL, "Primary Sound Driver", desc.szDrvName, lpContext) == FALSE)
+                            return DS_OK;
 		    }
 		}
 	    }
@@ -365,13 +354,10 @@
     for (wod = 0; wod < devs; ++wod) {
 	err = mmErr(waveOutMessage((HWAVEOUT)wod,DRV_QUERYDSOUNDDESC,(DWORD)&desc,0));
 	if (err == DS_OK) {
-	    err = mmErr(waveOutMessage((HWAVEOUT)wod,DRV_QUERYDSOUNDGUID,(DWORD)&device_guids[wod],0));
-	    if (err == DS_OK) {
-		TRACE("calling lpDSEnumCallback(%s,\"%s\",\"%s\",%p)\n",
-		    debugstr_guid(&device_guids[wod]),desc.szDesc,desc.szDrvName,lpContext);
-		if (lpDSEnumCallback(&device_guids[wod], desc.szDesc, desc.szDrvName, lpContext) == FALSE)
-		    return DS_OK;
-	    }
+            TRACE("calling lpDSEnumCallback(%s,\"%s\",\"%s\",%p)\n",
+                  debugstr_guid(&renderer_guids[wod]),desc.szDesc,desc.szDrvName,lpContext);
+            if (lpDSEnumCallback(&renderer_guids[wod], desc.szDesc, desc.szDrvName, lpContext) == FALSE)
+                return DS_OK;
 	}
     }
     return DS_OK;
@@ -412,22 +398,18 @@
     devs = waveOutGetNumDevs();
     if (devs > 0) {
 	if (GetDeviceID(&DSDEVID_DefaultPlayback, &guid) == DS_OK) {
-	    GUID temp;
 	    for (wod = 0; wod < devs; ++wod) {
-		err = mmErr(waveOutMessage((HWAVEOUT)wod,DRV_QUERYDSOUNDGUID,(DWORD)&temp,0));
-		if (err == DS_OK) {
-		    if (IsEqualGUID( &guid, &temp ) ) {
-			err = mmErr(waveOutMessage((HWAVEOUT)wod,DRV_QUERYDSOUNDDESC,(DWORD)&desc,0));
-			if (err == DS_OK) {
-			    TRACE("calling lpDSEnumCallback(NULL,\"%s\",\"%s\",%p)\n",
-				"Primary Sound Driver",desc.szDrvName,lpContext);
-			    MultiByteToWideChar( CP_ACP, 0, "Primary Sound Driver", -1,
-				wDesc, sizeof(wDesc)/sizeof(WCHAR) );
-				MultiByteToWideChar( CP_ACP, 0, desc.szDrvName, -1,
-				wName, sizeof(wName)/sizeof(WCHAR) );
-			    if (lpDSEnumCallback(NULL, wDesc, wName, lpContext) == FALSE)
-				return DS_OK;
-			}
+                if (IsEqualGUID( &guid, &renderer_guids[wod] ) ) {
+                    err = mmErr(waveOutMessage((HWAVEOUT)wod,DRV_QUERYDSOUNDDESC,(DWORD)&desc,0));
+                    if (err == DS_OK) {
+                        TRACE("calling lpDSEnumCallback(NULL,\"%s\",\"%s\",%p)\n",
+                              "Primary Sound Driver",desc.szDrvName,lpContext);
+                        MultiByteToWideChar( CP_ACP, 0, "Primary Sound Driver", -1,
+                                             wDesc, sizeof(wDesc)/sizeof(WCHAR) );
+                        MultiByteToWideChar( CP_ACP, 0, desc.szDrvName, -1,
+                                             wName, sizeof(wName)/sizeof(WCHAR) );
+                        if (lpDSEnumCallback(NULL, wDesc, wName, lpContext) == FALSE)
+                            return DS_OK;
 		    }
 		}
 	    }
@@ -437,17 +419,14 @@
     for (wod = 0; wod < devs; ++wod) {
 	err = mmErr(waveOutMessage((HWAVEOUT)wod,DRV_QUERYDSOUNDDESC,(DWORD)&desc,0));
 	if (err == DS_OK) {
-	    err = mmErr(waveOutMessage((HWAVEOUT)wod,DRV_QUERYDSOUNDGUID,(DWORD)&device_guids[wod],0));
-	    if (err == DS_OK) {
-		TRACE("calling lpDSEnumCallback(%s,\"%s\",\"%s\",%p)\n",
-		    debugstr_guid(&device_guids[wod]),desc.szDesc,desc.szDrvName,lpContext);
-		MultiByteToWideChar( CP_ACP, 0, desc.szDesc, -1,
-		    wDesc, sizeof(wDesc)/sizeof(WCHAR) );
-		    MultiByteToWideChar( CP_ACP, 0, desc.szDrvName, -1,
-		    wName, sizeof(wName)/sizeof(WCHAR) );
-		if (lpDSEnumCallback(&device_guids[wod], wDesc, wName, lpContext) == FALSE)
-		    return DS_OK;
-	    }
+            TRACE("calling lpDSEnumCallback(%s,\"%s\",\"%s\",%p)\n",
+                  debugstr_guid(&renderer_guids[wod]),desc.szDesc,desc.szDrvName,lpContext);
+            MultiByteToWideChar( CP_ACP, 0, desc.szDesc, -1,
+                                 wDesc, sizeof(wDesc)/sizeof(WCHAR) );
+            MultiByteToWideChar( CP_ACP, 0, desc.szDrvName, -1,
+                                 wName, sizeof(wName)/sizeof(WCHAR) );
+            if (lpDSEnumCallback(&renderer_guids[wod], wDesc, wName, lpContext) == FALSE)
+                return DS_OK;
 	}
     }
     return DS_OK;
@@ -677,4 +656,36 @@
 {
     FIXME("(void): stub\n");
     return S_FALSE;
+}
+
+#define INIT_GUID(guid, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8)      \
+        guid.Data1 = l; guid.Data2 = w1; guid.Data3 = w2;               \
+        guid.Data4[0] = b1; guid.Data4[1] = b2; guid.Data4[2] = b3;     \
+        guid.Data4[3] = b4; guid.Data4[4] = b5; guid.Data4[5] = b6;     \
+        guid.Data4[6] = b7; guid.Data4[7] = b8;
+
+/***********************************************************************
+ *           DllMain (DSOUND.init)
+ */
+BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD fdwReason, LPVOID lpvReserved)
+{
+    int i;
+    TRACE("(%p 0x%lx %p)\n", hInstDLL, fdwReason, lpvReserved);
+
+    switch (fdwReason) {
+    case DLL_PROCESS_ATTACH:
+        TRACE("DLL_PROCESS_ATTACH\n");
+        for (i = 0; i < MAXWAVEDRIVERS; i++) {
+            INIT_GUID(renderer_guids[i], 0xbd6dd71a, 0x3deb, 0x11d1, 0xb1, 0x71, 0x00, 0xc0, 0x4f, 0xc2, 0x00, 0x00 + i);
+            INIT_GUID(capture_guids[i],  0xbd6dd71b, 0x3deb, 0x11d1, 0xb1, 0x71, 0x00, 0xc0, 0x4f, 0xc2, 0x00, 0x00 + i);
+        }
+        break;
+    case DLL_PROCESS_DETACH:
+        TRACE("DLL_PROCESS_DETACH\n");
+        break;
+    default:
+        TRACE("UNKNOWN REASON\n");
+        break;
+    }
+    return TRUE;
 }
Index: dlls/dsound/dsound_private.h
===================================================================
RCS file: /home/wine/wine/dlls/dsound/dsound_private.h,v
retrieving revision 1.22
diff -u -r1.22 dsound_private.h
--- dlls/dsound/dsound_private.h	18 Aug 2004 00:30:37 -0000	1.22
+++ dlls/dsound/dsound_private.h	19 Aug 2004 22:46:28 -0000
@@ -489,6 +489,9 @@
 
 extern IDirectSoundImpl* dsound;
 
+extern GUID renderer_guids[MAXWAVEDRIVERS];
+extern GUID capture_guids[MAXWAVEDRIVERS];
+
 extern HRESULT mmErr(UINT err);
 extern void setup_dsound_options(void);
 extern const char * get_device_id(LPCGUID pGuid);
Index: dlls/dsound/propset.c
===================================================================
RCS file: /home/wine/wine/dlls/dsound/propset.c,v
retrieving revision 1.20
diff -u -r1.20 propset.c
--- dlls/dsound/propset.c	18 Aug 2004 00:30:37 -0000	1.20
+++ dlls/dsound/propset.c	19 Aug 2004 22:46:28 -0000
@@ -378,32 +378,26 @@
 	ppd->DataFlow = DIRECTSOUNDDEVICE_DATAFLOW_RENDER;
 	wodn = waveOutGetNumDevs();
 	for (wod = 0; wod < wodn; wod++) {
-	    err = mmErr(waveOutMessage((HWAVEOUT)wod,DRV_QUERYDSOUNDGUID,(DWORD)(&guid),0));
-	    if (err == DS_OK) {
-		if (IsEqualGUID( &dev_guid, &guid) ) {
-		    DSDRIVERDESC desc;
-		    ppd->WaveDeviceId = wod;
-		    ppd->Devnode = wod;
-		    err = mmErr(waveOutMessage((HWAVEOUT)wod,DRV_QUERYDSOUNDDESC,(DWORD)&(desc),0));
-		    if (err == DS_OK) {
-			PIDSDRIVER drv = NULL;
-			strncpy(ppd->DescriptionA, desc.szDesc, sizeof(ppd->DescriptionA) - 1);
-			strncpy(ppd->ModuleA, desc.szDrvName, sizeof(ppd->ModuleA) - 1);
-			MultiByteToWideChar( CP_ACP, 0, desc.szDesc, -1, ppd->DescriptionW, sizeof(ppd->DescriptionW)/sizeof(WCHAR) );
-			MultiByteToWideChar( CP_ACP, 0, desc.szDrvName, -1, ppd->ModuleW, sizeof(ppd->ModuleW)/sizeof(WCHAR) );
-			err = mmErr(waveOutMessage((HWAVEOUT)wod, DRV_QUERYDSOUNDIFACE, (DWORD)&drv, 0));
-			if (err == DS_OK && drv)
-				ppd->Type = DIRECTSOUNDDEVICE_TYPE_VXD;
-			break;
-		    } else {
-			WARN("waveOutMessage failed\n");
-			return E_PROP_ID_UNSUPPORTED;
-		    }
-		}
-	    } else {
-		WARN("waveOutMessage failed\n");
-		return E_PROP_ID_UNSUPPORTED;
-	    }
+            if (IsEqualGUID( &dev_guid, &renderer_guids[wod] ) ) {
+                DSDRIVERDESC desc;
+                ppd->WaveDeviceId = wod;
+                ppd->Devnode = wod;
+                err = mmErr(waveOutMessage((HWAVEOUT)wod,DRV_QUERYDSOUNDDESC,(DWORD)&(desc),0));
+                if (err == DS_OK) {
+                    PIDSDRIVER drv = NULL;
+                    strncpy(ppd->DescriptionA, desc.szDesc, sizeof(ppd->DescriptionA) - 1);
+                    strncpy(ppd->ModuleA, desc.szDrvName, sizeof(ppd->ModuleA) - 1);
+                    MultiByteToWideChar( CP_ACP, 0, desc.szDesc, -1, ppd->DescriptionW, sizeof(ppd->DescriptionW)/sizeof(WCHAR) );
+                    MultiByteToWideChar( CP_ACP, 0, desc.szDrvName, -1, ppd->ModuleW, sizeof(ppd->ModuleW)/sizeof(WCHAR) );
+                    err = mmErr(waveOutMessage((HWAVEOUT)wod, DRV_QUERYDSOUNDIFACE, (DWORD)&drv, 0));
+                    if (err == DS_OK && drv)
+                        ppd->Type = DIRECTSOUNDDEVICE_TYPE_VXD;
+                    break;
+                } else {
+                    WARN("waveOutMessage failed\n");
+                    return E_PROP_ID_UNSUPPORTED;
+                }
+            }
 	}
     } else if ( IsEqualGUID( &ppd->DeviceId , &DSDEVID_DefaultCapture) ||
 	        IsEqualGUID( &ppd->DeviceId , &DSDEVID_DefaultVoiceCapture) ) {
@@ -413,33 +407,26 @@
 	ppd->DataFlow = DIRECTSOUNDDEVICE_DATAFLOW_CAPTURE;
 	widn = waveInGetNumDevs();
 	for (wid = 0; wid < widn; wid++) {
-	    err = mmErr(waveInMessage((HWAVEIN)wid,DRV_QUERYDSOUNDGUID,(DWORD)(&guid),0));
-	    if (err == DS_OK) {
-		if (IsEqualGUID( &dev_guid, &guid) ) {
-		    DSDRIVERDESC desc;
-		    ppd->WaveDeviceId = wid;
-		    ppd->Devnode = wid;
-		    err = mmErr(waveInMessage((HWAVEIN)wid,DRV_QUERYDSOUNDDESC,(DWORD)&(desc),0));
-		    if (err == DS_OK) {
-			PIDSCDRIVER drv;
-			strncpy(ppd->DescriptionA, desc.szDesc, sizeof(ppd->DescriptionA) - 1);
-			strncpy(ppd->ModuleA, desc.szDrvName, sizeof(ppd->ModuleA) - 1);
-			MultiByteToWideChar( CP_ACP, 0, desc.szDesc, -1, ppd->DescriptionW, sizeof(ppd->DescriptionW)/sizeof(WCHAR) );
-			MultiByteToWideChar( CP_ACP, 0, desc.szDrvName, -1, ppd->ModuleW, sizeof(ppd->ModuleW)/sizeof(WCHAR) );
-			err = mmErr(waveInMessage((HWAVEIN)wid,DRV_QUERYDSOUNDIFACE,(DWORD)&drv,0));
-			if (err == DS_OK && drv)
-				ppd->Type = DIRECTSOUNDDEVICE_TYPE_VXD;
-			break;
-		    } else {
-			WARN("waveInMessage failed\n");
-			return E_PROP_ID_UNSUPPORTED;
-		    }
-		    break;
-		}
-	    } else {
-		WARN("waveInMessage failed\n");
-		return E_PROP_ID_UNSUPPORTED;
-	    }
+            if (IsEqualGUID( &dev_guid, &guid) ) {
+                DSDRIVERDESC desc;
+                ppd->WaveDeviceId = wid;
+                ppd->Devnode = wid;
+                err = mmErr(waveInMessage((HWAVEIN)wid,DRV_QUERYDSOUNDDESC,(DWORD)&(desc),0));
+                if (err == DS_OK) {
+                    PIDSCDRIVER drv;
+                    strncpy(ppd->DescriptionA, desc.szDesc, sizeof(ppd->DescriptionA) - 1);
+                    strncpy(ppd->ModuleA, desc.szDrvName, sizeof(ppd->ModuleA) - 1);
+                    MultiByteToWideChar( CP_ACP, 0, desc.szDesc, -1, ppd->DescriptionW, sizeof(ppd->DescriptionW)/sizeof(WCHAR) );
+                    MultiByteToWideChar( CP_ACP, 0, desc.szDrvName, -1, ppd->ModuleW, sizeof(ppd->ModuleW)/sizeof(WCHAR) );
+                    err = mmErr(waveInMessage((HWAVEIN)wid,DRV_QUERYDSOUNDIFACE,(DWORD)&drv,0));
+                    if (err == DS_OK && drv)
+                        ppd->Type = DIRECTSOUNDDEVICE_TYPE_VXD;
+                    break;
+                } else {
+                    WARN("waveInMessage failed\n");
+                    return E_PROP_ID_UNSUPPORTED;
+                }
+            }
 	}
     } else {
 	BOOL found = FALSE;
@@ -448,40 +435,66 @@
 	/* given specific device so try the render devices first */
 	wodn = waveOutGetNumDevs();
 	for (wod = 0; wod < wodn; wod++) {
-	    err = mmErr(waveOutMessage((HWAVEOUT)wod,DRV_QUERYDSOUNDGUID,(DWORD)(&guid),0));
-	    if (err == DS_OK) {
-		if (IsEqualGUID( &ppd->DeviceId, &guid) ) {
-		    DSDRIVERDESC desc;
-		    TRACE("DataFlow=DIRECTSOUNDDEVICE_DATAFLOW_RENDER\n");
-		    ppd->DataFlow = DIRECTSOUNDDEVICE_DATAFLOW_RENDER;
-		    ppd->WaveDeviceId = wod;
-		    ppd->Devnode = wod;
-		    err = mmErr(waveOutMessage((HWAVEOUT)wod,DRV_QUERYDSOUNDDESC,(DWORD)&(desc),0));
-		    if (err == DS_OK) {
-			PIDSDRIVER drv = NULL;
-			strncpy(ppd->DescriptionA, desc.szDesc, sizeof(ppd->DescriptionA) - 1);
-			strncpy(ppd->ModuleA, desc.szDrvName, sizeof(ppd->ModuleA) - 1);
-			MultiByteToWideChar( CP_ACP, 0, desc.szDesc, -1, ppd->DescriptionW, sizeof(ppd->DescriptionW)/sizeof(WCHAR) );
-			MultiByteToWideChar( CP_ACP, 0, desc.szDrvName, -1, ppd->ModuleW, sizeof(ppd->ModuleW)/sizeof(WCHAR) );
-			err = mmErr(waveOutMessage((HWAVEOUT)wod, DRV_QUERYDSOUNDIFACE, (DWORD)&drv, 0));
-			if (err == DS_OK && drv)
-				ppd->Type = DIRECTSOUNDDEVICE_TYPE_VXD;
-			found = TRUE;
-			break;
-		    } else {
-			WARN("waveOutMessage failed\n");
-			return E_PROP_ID_UNSUPPORTED;
-		    }
-		}
-	    } else {
-		WARN("waveOutMessage failed\n");
-		return E_PROP_ID_UNSUPPORTED;
-	    }
+            if (IsEqualGUID( &ppd->DeviceId, &renderer_guids[wod] ) ) {
+                DSDRIVERDESC desc;
+                TRACE("DataFlow=DIRECTSOUNDDEVICE_DATAFLOW_RENDER\n");
+                ppd->DataFlow = DIRECTSOUNDDEVICE_DATAFLOW_RENDER;
+                ppd->WaveDeviceId = wod;
+                ppd->Devnode = wod;
+                err = mmErr(waveOutMessage((HWAVEOUT)wod,DRV_QUERYDSOUNDDESC,(DWORD)&(desc),0));
+                if (err == DS_OK) {
+                    PIDSDRIVER drv = NULL;
+                    strncpy(ppd->DescriptionA, desc.szDesc, sizeof(ppd->DescriptionA) - 1);
+                    strncpy(ppd->ModuleA, desc.szDrvName, sizeof(ppd->ModuleA) - 1);
+                    MultiByteToWideChar( CP_ACP, 0, desc.szDesc, -1, ppd->DescriptionW, sizeof(ppd->DescriptionW)/sizeof(WCHAR) );
+                    MultiByteToWideChar( CP_ACP, 0, desc.szDrvName, -1, ppd->ModuleW, sizeof(ppd->ModuleW)/sizeof(WCHAR) );
+                    err = mmErr(waveOutMessage((HWAVEOUT)wod, DRV_QUERYDSOUNDIFACE, (DWORD)&drv, 0));
+                    if (err == DS_OK && drv)
+                        ppd->Type = DIRECTSOUNDDEVICE_TYPE_VXD;
+                    found = TRUE;
+                    break;
+                } else {
+                    WARN("waveOutMessage failed\n");
+                    return E_PROP_ID_UNSUPPORTED;
+                }
+            }
 	}
 
 	if (found == FALSE) {
-	    WARN("device not found\n");
-	    return E_PROP_ID_UNSUPPORTED;
+            ULONG wid;
+            int widn;
+            /* given specific device so try the capture devices next */
+            widn = waveInGetNumDevs();
+            for (wid = 0; wid < widn; wid++) {
+                if (IsEqualGUID( &ppd->DeviceId, &capture_guids[wid] ) ) {
+                    DSDRIVERDESC desc;
+                    TRACE("DataFlow=DIRECTSOUNDDEVICE_DATAFLOW_CAPTURE\n");
+                    ppd->DataFlow = DIRECTSOUNDDEVICE_DATAFLOW_CAPTURE;
+                    ppd->WaveDeviceId = wid;
+                    ppd->Devnode = wid;
+                    err = mmErr(waveInMessage((HWAVEIN)wod,DRV_QUERYDSOUNDDESC,(DWORD)&(desc),0));
+                    if (err == DS_OK) {
+                        PIDSDRIVER drv = NULL;
+                        strncpy(ppd->DescriptionA, desc.szDesc, sizeof(ppd->DescriptionA) - 1);
+                        strncpy(ppd->ModuleA, desc.szDrvName, sizeof(ppd->ModuleA) - 1);
+                        MultiByteToWideChar( CP_ACP, 0, desc.szDesc, -1, ppd->DescriptionW, sizeof(ppd->DescriptionW)/sizeof(WCHAR) );
+                        MultiByteToWideChar( CP_ACP, 0, desc.szDrvName, -1, ppd->ModuleW, sizeof(ppd->ModuleW)/sizeof(WCHAR) );
+                        err = mmErr(waveInMessage((HWAVEIN)wod, DRV_QUERYDSOUNDIFACE, (DWORD)&drv, 0));
+                        if (err == DS_OK && drv)
+                            ppd->Type = DIRECTSOUNDDEVICE_TYPE_VXD;
+                        found = TRUE;
+                        break;
+                    } else {
+                        WARN("waveInMessage failed\n");
+                        return E_PROP_ID_UNSUPPORTED;
+                    }
+                }
+            }
+
+            if (found == FALSE) {
+                WARN("device not found\n");
+                return E_PROP_ID_UNSUPPORTED;
+            }
 	}
     }
 
@@ -501,7 +514,7 @@
 {
     PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_A_DATA ppd = (PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_A_DATA) pPropData;
     HRESULT err;
-    GUID guid, dev_guid;
+    GUID dev_guid;
     TRACE("(guidPropSet=%s,pPropData=%p,cbPropData=%ld,pcbReturned=%p)\n",
 	debugstr_guid(guidPropSet),pPropData,cbPropData,pcbReturned);
 
@@ -531,9 +544,7 @@
 	ppd->DataFlow = DIRECTSOUNDDEVICE_DATAFLOW_RENDER;
 	wodn = waveOutGetNumDevs();
 	for (wod = 0; wod < wodn; wod++) {
-	    err = mmErr(waveOutMessage((HWAVEOUT)wod,DRV_QUERYDSOUNDGUID,(DWORD)(&guid),0));
-	    if (err == DS_OK) {
-		if (IsEqualGUID( &dev_guid, &guid) ) {
+		if (IsEqualGUID( &dev_guid, &renderer_guids[wod] ) ) {
 		    DSDRIVERDESC desc;
 		    ppd->WaveDeviceId = wod;
 		    err = mmErr(waveOutMessage((HWAVEOUT)wod,DRV_QUERYDSOUNDDESC,(DWORD)&(desc),0));
@@ -560,10 +571,6 @@
 			return E_PROP_ID_UNSUPPORTED;
 		    }
 		}
-	    } else {
-		WARN("waveOutMessage failed\n");
-		return E_PROP_ID_UNSUPPORTED;
-	    }
 	}
     } else if (IsEqualGUID( &ppd->DeviceId , &DSDEVID_DefaultCapture) ||
 	       IsEqualGUID( &ppd->DeviceId , &DSDEVID_DefaultVoiceCapture) ) {
@@ -573,9 +580,7 @@
 	ppd->DataFlow = DIRECTSOUNDDEVICE_DATAFLOW_CAPTURE;
 	widn = waveInGetNumDevs();
 	for (wid = 0; wid < widn; wid++) {
-	    err = mmErr(waveInMessage((HWAVEIN)wid,DRV_QUERYDSOUNDGUID,(DWORD)(&guid),0));
-	    if (err == DS_OK) {
-		if (IsEqualGUID( &dev_guid, &guid) ) {
+		if (IsEqualGUID( &dev_guid, &capture_guids[wid] ) ) {
 		    DSDRIVERDESC desc;
 		    ppd->WaveDeviceId = wid;
 		    err = mmErr(waveInMessage((HWAVEIN)wid,DRV_QUERYDSOUNDDESC,(DWORD)&(desc),0));
@@ -603,10 +608,6 @@
 		    }
 		    break;
 		}
-	    } else {
-		WARN("waveOutMessage failed\n");
-		return E_PROP_ID_UNSUPPORTED;
-	    }
 	}
     } else {
 	BOOL found = FALSE;
@@ -615,9 +616,7 @@
 	/* given specific device so try the render devices first */
 	wodn = waveOutGetNumDevs();
 	for (wod = 0; wod < wodn; wod++) {
-	    err = mmErr(waveOutMessage((HWAVEOUT)wod,DRV_QUERYDSOUNDGUID,(DWORD)(&guid),0));
-	    if (err == DS_OK) {
-		if (IsEqualGUID( &ppd->DeviceId, &guid) ) {
+		if (IsEqualGUID( &ppd->DeviceId, &renderer_guids[wod] ) ) {
 		    DSDRIVERDESC desc;
 		    TRACE("DataFlow=DIRECTSOUNDDEVICE_DATAFLOW_RENDER\n");
 		    ppd->DataFlow = DIRECTSOUNDDEVICE_DATAFLOW_RENDER;
@@ -647,10 +646,6 @@
 			return E_PROP_ID_UNSUPPORTED;
 		    }
 		}
-	    } else {
-		WARN("waveOutMessage failed\n");
-		return E_PROP_ID_UNSUPPORTED;
-	    }
 	}
 
 	if (found == FALSE) {
@@ -675,7 +670,7 @@
 {
     PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_W_DATA ppd = (PDSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_W_DATA) pPropData;
     HRESULT err;
-    GUID guid, dev_guid;
+    GUID dev_guid;
     TRACE("(guidPropSet=%s,pPropData=%p,cbPropData=%ld,pcbReturned=%p)\n",
 	debugstr_guid(guidPropSet),pPropData,cbPropData,pcbReturned);
 
@@ -705,9 +700,7 @@
 	ppd->DataFlow = DIRECTSOUNDDEVICE_DATAFLOW_RENDER;
 	wodn = waveOutGetNumDevs();
 	for (wod = 0; wod < wodn; wod++) {
-	    err = mmErr(waveOutMessage((HWAVEOUT)wod,DRV_QUERYDSOUNDGUID,(DWORD)(&guid),0));
-	    if (err == DS_OK) {
-		if (IsEqualGUID( &dev_guid, &guid) ) {
+		if (IsEqualGUID( &dev_guid, &renderer_guids[wod] ) ) {
 		    DSDRIVERDESC desc;
 		    ppd->WaveDeviceId = wod;
 		    err = mmErr(waveOutMessage((HWAVEOUT)wod,DRV_QUERYDSOUNDDESC,(DWORD)&(desc),0));
@@ -734,10 +727,6 @@
 			return E_PROP_ID_UNSUPPORTED;
 		    }
 		}
-	    } else {
-		WARN("waveOutMessage failed\n");
-		return E_PROP_ID_UNSUPPORTED;
-	    }
 	}
     } else if (IsEqualGUID( &ppd->DeviceId , &DSDEVID_DefaultCapture) ||
 	       IsEqualGUID( &ppd->DeviceId , &DSDEVID_DefaultVoiceCapture) ) {
@@ -747,9 +736,7 @@
 	ppd->DataFlow = DIRECTSOUNDDEVICE_DATAFLOW_CAPTURE;
 	widn = waveInGetNumDevs();
 	for (wid = 0; wid < widn; wid++) {
-	    err = mmErr(waveInMessage((HWAVEIN)wid,DRV_QUERYDSOUNDGUID,(DWORD)(&guid),0));
-	    if (err == DS_OK) {
-		if (IsEqualGUID( &dev_guid, &guid) ) {
+		if (IsEqualGUID( &dev_guid, &capture_guids[wid] ) ) {
 		    DSDRIVERDESC desc;
 		    ppd->WaveDeviceId = wid;
 		    err = mmErr(waveInMessage((HWAVEIN)wid,DRV_QUERYDSOUNDDESC,(DWORD)&(desc),0));
@@ -777,10 +764,6 @@
 		    }
 		    break;
 		}
-	    } else {
-		WARN("waveInMessage failed\n");
-		return E_PROP_ID_UNSUPPORTED;
-	    }
 	}
     } else {
 	BOOL found = FALSE;
@@ -789,9 +772,7 @@
 	/* given specific device so try the render devices first */
 	wodn = waveOutGetNumDevs();
 	for (wod = 0; wod < wodn; wod++) {
-	    err = mmErr(waveOutMessage((HWAVEOUT)wod,DRV_QUERYDSOUNDGUID,(DWORD)(&guid),0));
-	    if (err == DS_OK) {
-		if (IsEqualGUID( &ppd->DeviceId, &guid) ) {
+		if (IsEqualGUID( &ppd->DeviceId, &renderer_guids[wod] ) ) {
 		    DSDRIVERDESC desc;
 		    TRACE("DataFlow=DIRECTSOUNDDEVICE_DATAFLOW_RENDER\n");
 		    ppd->DataFlow = DIRECTSOUNDDEVICE_DATAFLOW_RENDER;
@@ -821,10 +802,6 @@
 			return E_PROP_ID_UNSUPPORTED;
 		    }
 		}
-	    } else {
-		WARN("waveOutMessage failed\n");
-		return E_PROP_ID_UNSUPPORTED;
-	    }
 	}
 
 	if (found == FALSE) {
@@ -868,25 +845,21 @@
 	    if (ppd->Callback) {
 		unsigned devs, wod, wid;
 		DSDRIVERDESC desc;
-		GUID guid;
 		DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_A_DATA data;
 
 		devs = waveOutGetNumDevs();
 		for (wod = 0; wod < devs; ++wod) {
 		    err = mmErr(waveOutMessage((HWAVEOUT)wod,DRV_QUERYDSOUNDDESC,(DWORD)&desc,0));
 		    if (err == DS_OK) {
-			err = mmErr(waveOutMessage((HWAVEOUT)wod,DRV_QUERYDSOUNDGUID,(DWORD)&guid,0));
-			if (err == DS_OK) {
-			    memset(&data, 0, sizeof(data));
-			    data.DataFlow = DIRECTSOUNDDEVICE_DATAFLOW_RENDER;
-			    data.WaveDeviceId = wod;
-			    data.DeviceId = guid;
-			    data.Description = desc.szDesc;
-			    data.Module = desc.szDrvName;
-			    data.Interface = "Interface";
-			    TRACE("calling Callback(%p,%p)\n", &data, ppd->Context);
-			    (ppd->Callback)(&data, ppd->Context);
-			}
+			memset(&data, 0, sizeof(data));
+			data.DataFlow = DIRECTSOUNDDEVICE_DATAFLOW_RENDER;
+			data.WaveDeviceId = wod;
+			data.DeviceId = renderer_guids[wod];
+			data.Description = desc.szDesc;
+			data.Module = desc.szDrvName;
+			data.Interface = "Interface";
+			TRACE("calling Callback(%p,%p)\n", &data, ppd->Context);
+			(ppd->Callback)(&data, ppd->Context);
 		    }
 		}
 
@@ -894,18 +867,15 @@
 		for (wid = 0; wid < devs; ++wid) {
 		    err = mmErr(waveInMessage((HWAVEIN)wid,DRV_QUERYDSOUNDDESC,(DWORD)&desc,0));
 		    if (err == DS_OK) {
-			err = mmErr(waveInMessage((HWAVEIN)wid,DRV_QUERYDSOUNDGUID,(DWORD)&guid,0));
-			if (err == DS_OK) {
-			    memset(&data, 0, sizeof(data));
-			    data.DataFlow = DIRECTSOUNDDEVICE_DATAFLOW_CAPTURE;
-			    data.WaveDeviceId = wid;
-			    data.DeviceId = guid;
-			    data.Description = desc.szDesc;
-			    data.Module = desc.szDrvName;
-			    data.Interface = "Interface";
-			    TRACE("calling Callback(%p,%p)\n", &data, ppd->Context);
-			    (ppd->Callback)(&data, ppd->Context);
-			}
+			memset(&data, 0, sizeof(data));
+			data.DataFlow = DIRECTSOUNDDEVICE_DATAFLOW_CAPTURE;
+			data.WaveDeviceId = wid;
+			data.DeviceId = capture_guids[wid];
+			data.Description = desc.szDesc;
+			data.Module = desc.szDrvName;
+			data.Interface = "Interface";
+			TRACE("calling Callback(%p,%p)\n", &data, ppd->Context);
+			(ppd->Callback)(&data, ppd->Context);
 		    }
 		}
 
@@ -940,35 +910,31 @@
 	    if (ppd->Callback) {
 		unsigned devs, wod, wid;
 		DSDRIVERDESC desc;
-		GUID guid;
 		DSPROPERTY_DIRECTSOUNDDEVICE_DESCRIPTION_W_DATA data;
 
 		devs = waveOutGetNumDevs();
 		for (wod = 0; wod < devs; ++wod) {
 		    err = mmErr(waveOutMessage((HWAVEOUT)wod,DRV_QUERYDSOUNDDESC,(DWORD)&desc,0));
 		    if (err == DS_OK) {
-			err = mmErr(waveOutMessage((HWAVEOUT)wod,DRV_QUERYDSOUNDGUID,(DWORD)&guid,0));
-			if (err == DS_OK) {
-			    /* FIXME: this is a memory leak */
-			    WCHAR * wDescription = HeapAlloc(GetProcessHeap(),0,0x200);
-			    WCHAR * wModule = HeapAlloc(GetProcessHeap(),0,0x200);
-			    WCHAR * wInterface = HeapAlloc(GetProcessHeap(),0,0x200);
-
-			    memset(&data, 0, sizeof(data));
-			    data.DataFlow = DIRECTSOUNDDEVICE_DATAFLOW_RENDER;
-			    data.WaveDeviceId = wod;
-			    data.DeviceId = guid;
-
-			    MultiByteToWideChar( CP_ACP, 0, desc.szDesc, -1, wDescription, 0x100  );
-			    MultiByteToWideChar( CP_ACP, 0, desc.szDrvName, -1, wModule, 0x100 );
-			    MultiByteToWideChar( CP_ACP, 0, "Interface", -1, wInterface, 0x100 );
-
-			    data.Description = wDescription;
-			    data.Module = wModule;
-			    data.Interface = wInterface;
-			    TRACE("calling Callback(%p,%p)\n", &data, ppd->Context);
-			    (ppd->Callback)(&data, ppd->Context);
-			}
+			/* FIXME: this is a memory leak */
+			WCHAR * wDescription = HeapAlloc(GetProcessHeap(),0,0x200);
+			WCHAR * wModule = HeapAlloc(GetProcessHeap(),0,0x200);
+			WCHAR * wInterface = HeapAlloc(GetProcessHeap(),0,0x200);
+
+			memset(&data, 0, sizeof(data));
+			data.DataFlow = DIRECTSOUNDDEVICE_DATAFLOW_RENDER;
+			data.WaveDeviceId = wod;
+			data.DeviceId = renderer_guids[wod];
+
+			MultiByteToWideChar( CP_ACP, 0, desc.szDesc, -1, wDescription, 0x100  );
+			MultiByteToWideChar( CP_ACP, 0, desc.szDrvName, -1, wModule, 0x100 );
+			MultiByteToWideChar( CP_ACP, 0, "Interface", -1, wInterface, 0x100 );
+
+			data.Description = wDescription;
+			data.Module = wModule;
+			data.Interface = wInterface;
+			TRACE("calling Callback(%p,%p)\n", &data, ppd->Context);
+			(ppd->Callback)(&data, ppd->Context);
 		    }
 		}
 
@@ -976,28 +942,25 @@
 		for (wid = 0; wid < devs; ++wid) {
 		    err = mmErr(waveInMessage((HWAVEIN)wid,DRV_QUERYDSOUNDDESC,(DWORD)&desc,0));
 		    if (err == DS_OK) {
-			err = mmErr(waveInMessage((HWAVEIN)wid,DRV_QUERYDSOUNDGUID,(DWORD)&guid,0));
-			if (err == DS_OK) {
-			    /* FIXME: this is a memory leak */
-			    WCHAR * wDescription = HeapAlloc(GetProcessHeap(),0,0x200);
-			    WCHAR * wModule = HeapAlloc(GetProcessHeap(),0,0x200);
-			    WCHAR * wInterface = HeapAlloc(GetProcessHeap(),0,0x200);
-
-			    memset(&data, 0, sizeof(data));
-			    data.DataFlow = DIRECTSOUNDDEVICE_DATAFLOW_CAPTURE;
-			    data.WaveDeviceId = wid;
-			    data.DeviceId = guid;
-
-			    MultiByteToWideChar( CP_ACP, 0, desc.szDesc, -1, wDescription, 0x100  );
-			    MultiByteToWideChar( CP_ACP, 0, desc.szDrvName, -1, wModule, 0x100 );
-			    MultiByteToWideChar( CP_ACP, 0, "Interface", -1, wInterface, 0x100 );
-
-			    data.Description = wDescription;
-			    data.Module = wModule;
-			    data.Interface = wInterface;
-			    TRACE("calling Callback(%p,%p)\n", &data, ppd->Context);
-			    (ppd->Callback)(&data, ppd->Context);
-			}
+			/* FIXME: this is a memory leak */
+			WCHAR * wDescription = HeapAlloc(GetProcessHeap(),0,0x200);
+			WCHAR * wModule = HeapAlloc(GetProcessHeap(),0,0x200);
+			WCHAR * wInterface = HeapAlloc(GetProcessHeap(),0,0x200);
+
+			memset(&data, 0, sizeof(data));
+			data.DataFlow = DIRECTSOUNDDEVICE_DATAFLOW_CAPTURE;
+			data.WaveDeviceId = wid;
+			data.DeviceId = capture_guids[wid];
+
+			MultiByteToWideChar( CP_ACP, 0, desc.szDesc, -1, wDescription, 0x100  );
+			MultiByteToWideChar( CP_ACP, 0, desc.szDrvName, -1, wModule, 0x100 );
+			MultiByteToWideChar( CP_ACP, 0, "Interface", -1, wInterface, 0x100 );
+
+			data.Description = wDescription;
+			data.Module = wModule;
+			data.Interface = wInterface;
+			TRACE("calling Callback(%p,%p)\n", &data, ppd->Context);
+			(ppd->Callback)(&data, ppd->Context);
 		    }
 		}
 
Index: dlls/winmm/lolvldrv.c
===================================================================
RCS file: /home/wine/wine/dlls/winmm/lolvldrv.c,v
retrieving revision 1.58
diff -u -r1.58 lolvldrv.c
--- dlls/winmm/lolvldrv.c	1 Jun 2004 19:40:48 -0000	1.58
+++ dlls/winmm/lolvldrv.c	19 Aug 2004 22:46:31 -0000
@@ -512,7 +512,6 @@
 
     case DRV_QUERYDSOUNDIFACE: /* Wine-specific: Retrieve DirectSound interface */
     case DRV_QUERYDSOUNDDESC: /* Wine-specific: Retrieve DirectSound driver description*/
-    case DRV_QUERYDSOUNDGUID: /* Wine-specific: Retrieve DirectSound driver GUID */
 	return MMDRV_Message(mld, uMsg, dwParam1, dwParam2, TRUE);
 
     default:
Index: dlls/winmm/winealsa/audio.c
===================================================================
RCS file: /home/wine/wine/dlls/winmm/winealsa/audio.c,v
retrieving revision 1.51
diff -u -r1.51 audio.c
--- dlls/winmm/winealsa/audio.c	19 Aug 2004 19:55:38 -0000	1.51
+++ dlls/winmm/winealsa/audio.c	19 Aug 2004 22:46:34 -0000
@@ -188,7 +188,6 @@
 
     /* DirectSound stuff */
     DSDRIVERDESC                ds_desc;
-    GUID                        ds_guid;
 } WINE_WAVEOUT;
 
 typedef struct {
@@ -235,7 +234,6 @@
 
     /* DirectSound stuff */
     DSDRIVERDESC                ds_desc;
-    GUID                        ds_guid;
 } WINE_WAVEIN;
 
 static WINE_WAVEOUT	WOutDev   [MAX_WAVEOUTDRV];
@@ -245,7 +243,6 @@
 
 static DWORD wodDsCreate(UINT wDevID, PIDSDRIVER* drv);
 static DWORD wodDsDesc(UINT wDevID, PDSDRIVERDESC desc);
-static DWORD wodDsGuid(UINT wDevID, LPGUID pGuid);
 
 /* These strings used only for tracing */
 static const char * getCmdString(enum win_wm_message msg)
@@ -672,12 +669,6 @@
     return result;
 }
 
-#define INIT_GUID(guid, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8)      \
-        guid.Data1 = l; guid.Data2 = w1; guid.Data3 = w2;               \
-        guid.Data4[0] = b1; guid.Data4[1] = b2; guid.Data4[2] = b3;     \
-        guid.Data4[3] = b4; guid.Data4[4] = b5; guid.Data4[5] = b6;     \
-        guid.Data4[6] = b7; guid.Data4[7] = b8;
-
 /******************************************************************
  *		ALSA_WaveInit
  *
@@ -713,7 +704,6 @@
     wwo->caps.dwSupport = WAVECAPS_VOLUME;
     strcpy(wwo->ds_desc.szDesc, "WineALSA DirectSound Driver");
     strcpy(wwo->ds_desc.szDrvName, "winealsa.drv");
-    INIT_GUID(wwo->ds_guid,  0xbd6dd71a, 0x3deb, 0x11d1, 0xb1, 0x71, 0x00, 0xc0, 0x4f, 0xc2, 0x00, 0x00 + 0);
 
     if (!wine_dlopen("libasound.so.2", RTLD_LAZY|RTLD_GLOBAL, NULL, 0))
     {
@@ -828,7 +818,6 @@
     wwi->caps.dwSupport = WAVECAPS_VOLUME;
     strcpy(wwi->ds_desc.szDesc, "WineALSA DirectSound Driver");
     strcpy(wwi->ds_desc.szDrvName, "winealsa.drv");
-    INIT_GUID(wwi->ds_guid, 0xbd6dd71b, 0x3deb, 0x11d1, 0xb1, 0x71, 0x00, 0xc0, 0x4f, 0xc2, 0x00, 0x00 + 0);
 
     snd_pcm_info_alloca(&info);
     snd_pcm_hw_params_alloca(&hw_params);
@@ -2173,7 +2162,6 @@
     case DRV_QUERYDEVICEINTERFACE:     return wodDevInterface           (wDevID, (PWCHAR)dwParam1, dwParam2);
     case DRV_QUERYDSOUNDIFACE:	return wodDsCreate	(wDevID, (PIDSDRIVER*)dwParam1);
     case DRV_QUERYDSOUNDDESC:	return wodDsDesc	(wDevID, (PDSDRIVERDESC)dwParam1);
-    case DRV_QUERYDSOUNDGUID:	return wodDsGuid	(wDevID, (LPGUID)dwParam1);
 
     default:
 	FIXME("unknown message %d!\n", wMsg);
@@ -2736,15 +2724,6 @@
     return MMSYSERR_NOERROR;
 }
 
-static DWORD wodDsGuid(UINT wDevID, LPGUID pGuid)
-{
-    TRACE("(%d,%p)\n",wDevID,pGuid);
-
-    memcpy(pGuid, &(WOutDev[wDevID].ds_guid), sizeof(GUID));
-
-    return MMSYSERR_NOERROR;
-}
-
 /*======================================================================*
 *                  Low level WAVE IN implementation			*
 *======================================================================*/
@@ -3551,18 +3530,6 @@
 }
 
 /**************************************************************************
- *                              widDsGuid                       [internal]
- */
-static DWORD widDsGuid(UINT wDevID, LPGUID pGuid)
-{
-    TRACE("(%d,%p)\n",wDevID,pGuid);
-
-    memcpy(pGuid, &(WInDev[wDevID].ds_guid), sizeof(GUID));
-
-    return MMSYSERR_NOERROR;
-}
-
-/**************************************************************************
  * 				widMessage (WINEALSA.@)
  */
 DWORD WINAPI ALSA_widMessage(UINT wDevID, UINT wMsg, DWORD dwUser,
@@ -3593,7 +3560,6 @@
     case DRV_QUERYDEVICEINTERFACE:     return widDevInterface           (wDevID, (PWCHAR)dwParam1, dwParam2);
     case DRV_QUERYDSOUNDIFACE:	return widDsCreate   (wDevID, (PIDSCDRIVER*)dwParam1);
     case DRV_QUERYDSOUNDDESC:	return widDsDesc     (wDevID, (PDSDRIVERDESC)dwParam1);
-    case DRV_QUERYDSOUNDGUID:	return widDsGuid     (wDevID, (LPGUID)dwParam1);
     default:
 	FIXME("unknown message %d!\n", wMsg);
     }
Index: dlls/winmm/winearts/audio.c
===================================================================
RCS file: /home/wine/wine/dlls/winmm/winearts/audio.c,v
retrieving revision 1.22
diff -u -r1.22 audio.c
--- dlls/winmm/winearts/audio.c	23 Jul 2004 23:01:21 -0000	1.22
+++ dlls/winmm/winearts/audio.c	19 Aug 2004 22:46:35 -0000
@@ -207,7 +207,6 @@
 
 static DWORD wodDsCreate(UINT wDevID, PIDSDRIVER* drv);
 static DWORD wodDsDesc(UINT wDevID, PDSDRIVERDESC desc);
-static DWORD wodDsGuid(UINT wDevID, LPGUID pGuid);
 
 /* These strings used only for tracing */
 static const char *wodPlayerCmdString[] = {
@@ -1581,7 +1580,6 @@
     case DRV_QUERYDEVICEINTERFACE:     return wodDevInterface           (wDevID, (PWCHAR)dwParam1, dwParam2);
     case DRV_QUERYDSOUNDIFACE:	return wodDsCreate	(wDevID, (PIDSDRIVER*)dwParam1);
     case DRV_QUERYDSOUNDDESC:	return wodDsDesc	(wDevID, (PDSDRIVERDESC)dwParam1);
-    case DRV_QUERYDSOUNDGUID:	return wodDsGuid	(wDevID, (LPGUID)dwParam1);
     default:
 	FIXME("unknown message %d!\n", wMsg);
     }
@@ -2130,12 +2128,6 @@
     memset(desc, 0, sizeof(*desc));
     strcpy(desc->szDesc, "Wine aRts DirectSound Driver");
     strcpy(desc->szDrvName, "winearts.drv");
-    return MMSYSERR_NOERROR;
-}
-
-static DWORD wodDsGuid(UINT wDevID, LPGUID pGuid)
-{
-    memcpy(pGuid, &DSDEVID_DefaultPlayback, sizeof(GUID));
     return MMSYSERR_NOERROR;
 }
 
Index: dlls/winmm/wineaudioio/audio.c
===================================================================
RCS file: /home/wine/wine/dlls/winmm/wineaudioio/audio.c,v
retrieving revision 1.16
diff -u -r1.16 audio.c
--- dlls/winmm/wineaudioio/audio.c	12 Aug 2004 23:00:51 -0000	1.16
+++ dlls/winmm/wineaudioio/audio.c	19 Aug 2004 22:46:37 -0000
@@ -182,8 +182,6 @@
 static DWORD widDsCreate(UINT wDevID, PIDSCDRIVER* drv);
 static DWORD wodDsDesc(UINT wDevID, PDSDRIVERDESC desc);
 static DWORD widDsDesc(UINT wDevID, PDSDRIVERDESC desc);
-static DWORD wodDsGuid(UINT wDevID, LPGUID pGuid);
-static DWORD widDsGuid(UINT wDevID, LPGUID pGuid);
 
 static DWORD bytes_to_mmtime(LPMMTIME lpTime, DWORD position,
                              PCMWAVEFORMAT* format)
@@ -1262,7 +1260,6 @@
 
     case DRV_QUERYDSOUNDIFACE:	return wodDsCreate	(wDevID, (PIDSDRIVER*)dwParam1);
     case DRV_QUERYDSOUNDDESC:	return wodDsDesc	(wDevID, (PDSDRIVERDESC)dwParam1);
-    case DRV_QUERYDSOUNDGUID:	return wodDsGuid	(wDevID, (LPGUID)dwParam1);
     default:
 	FIXME("unknown message %d!\n", wMsg);
     }
@@ -1706,12 +1703,6 @@
     return MMSYSERR_NOERROR;
 }
 
-static DWORD wodDsGuid(UINT wDevID, LPGUID pGuid)
-{
-    memcpy(pGuid, &DSDEVID_DefaultPlayback, sizeof(GUID));
-    return MMSYSERR_NOERROR;
-}
-
 /*======================================================================*
  *                  Low level WAVE IN implementation			*
  *======================================================================*/
@@ -2258,7 +2249,6 @@
     case WIDM_STOP:		return widStop       (wDevID);
     case DRV_QUERYDSOUNDIFACE:	return widDsCreate   (wDevID, (PIDSCDRIVER*)dwParam1);
     case DRV_QUERYDSOUNDDESC:	return widDsDesc     (wDevID, (PDSDRIVERDESC)dwParam1);
-    case DRV_QUERYDSOUNDGUID:	return widDsGuid     (wDevID, (LPGUID)dwParam1);
     default:
 	FIXME("unknown message %u!\n", wMsg);
     }
@@ -2282,12 +2272,6 @@
     memset(desc, 0, sizeof(*desc));
     strcpy(desc->szDesc, "Wine LIBAUDIOIO DirectSound Driver");
     strcpy(desc->szDrvName, "wineaudioio.drv");
-    return MMSYSERR_NOERROR;
-}
-
-static DWORD widDsGuid(UINT wDevID, LPGUID pGuid)
-{
-    memcpy(pGuid, &DSDEVID_DefaultCapture, sizeof(GUID));
     return MMSYSERR_NOERROR;
 }
 
Index: dlls/winmm/winejack/audio.c
===================================================================
RCS file: /home/wine/wine/dlls/winmm/winejack/audio.c,v
retrieving revision 1.15
diff -u -r1.15 audio.c
--- dlls/winmm/winejack/audio.c	12 Aug 2004 19:52:49 -0000	1.15
+++ dlls/winmm/winejack/audio.c	19 Aug 2004 22:46:38 -0000
@@ -195,7 +195,6 @@
 
 static DWORD wodDsCreate(UINT wDevID, PIDSDRIVER* drv);
 static DWORD wodDsDesc(UINT wDevID, PDSDRIVERDESC desc);
-static DWORD wodDsGuid(UINT wDevID, LPGUID pGuid);
 
 static LPWAVEHDR wodHelper_PlayPtrNext(WINE_WAVEOUT* wwo);
 static DWORD wodHelper_NotifyCompletions(WINE_WAVEOUT* wwo, BOOL force);
@@ -1767,7 +1766,6 @@
   case DRV_QUERYDEVICEINTERFACE:     return wodDevInterface           (wDevID, (PWCHAR)dwParam1, dwParam2);
   case DRV_QUERYDSOUNDIFACE:	return wodDsCreate(wDevID, (PIDSDRIVER*)dwParam1);
   case DRV_QUERYDSOUNDDESC:	return wodDsDesc(wDevID, (PDSDRIVERDESC)dwParam1);
-  case DRV_QUERYDSOUNDGUID:	return wodDsGuid(wDevID, (LPGUID)dwParam1);
   default:
     FIXME("unknown message %d!\n", wMsg);
     }
@@ -1815,12 +1813,6 @@
     memset(desc, 0, sizeof(*desc));
     strcpy(desc->szDesc, "Wine jack DirectSound Driver");
     strcpy(desc->szDrvName, "winejack.drv");
-    return MMSYSERR_NOERROR;
-}
-
-static DWORD wodDsGuid(UINT wDevID, LPGUID pGuid)
-{
-    memcpy(pGuid, &DSDEVID_DefaultPlayback, sizeof(GUID));
     return MMSYSERR_NOERROR;
 }
 
Index: dlls/winmm/winenas/audio.c
===================================================================
RCS file: /home/wine/wine/dlls/winmm/winenas/audio.c,v
retrieving revision 1.16
diff -u -r1.16 audio.c
--- dlls/winmm/winenas/audio.c	23 Jul 2004 23:01:21 -0000	1.16
+++ dlls/winmm/winenas/audio.c	19 Aug 2004 22:46:39 -0000
@@ -189,7 +189,6 @@
 
 static DWORD wodDsCreate(UINT wDevID, PIDSDRIVER* drv);
 static DWORD wodDsDesc(UINT wDevID, PDSDRIVERDESC desc);
-static DWORD wodDsGuid(UINT wDevID, LPGUID pGuid);
 
 
 /* NASFUNC */
@@ -1286,7 +1285,6 @@
 
     case DRV_QUERYDSOUNDIFACE:	return wodDsCreate	(wDevID, (PIDSDRIVER*)dwParam1);
     case DRV_QUERYDSOUNDDESC:	return wodDsDesc	(wDevID, (PDSDRIVERDESC)dwParam1);
-    case DRV_QUERYDSOUNDGUID:	return wodDsGuid	(wDevID, (LPGUID)dwParam1);
     default:
 	FIXME("unknown message %d!\n", wMsg);
     }
@@ -1310,12 +1308,6 @@
     memset(desc, 0, sizeof(*desc));
     strcpy(desc->szDesc, "Wine NAS DirectSound Driver");
     strcpy(desc->szDrvName, "winenas.drv");
-    return MMSYSERR_NOERROR;
-}
-
-static DWORD wodDsGuid(UINT wDevID, LPGUID pGuid)
-{
-    memcpy(pGuid, &DSDEVID_DefaultPlayback, sizeof(GUID));
     return MMSYSERR_NOERROR;
 }
 
Index: dlls/winmm/wineoss/audio.c
===================================================================
RCS file: /home/wine/wine/dlls/winmm/wineoss/audio.c,v
retrieving revision 1.144
diff -u -r1.144 audio.c
--- dlls/winmm/wineoss/audio.c	19 Aug 2004 18:54:41 -0000	1.144
+++ dlls/winmm/wineoss/audio.c	19 Aug 2004 22:46:43 -0000
@@ -174,8 +174,6 @@
     DSDRIVERDESC                ds_desc;
     DSDRIVERCAPS                ds_caps;
     DSCDRIVERCAPS               dsc_caps;
-    GUID                        ds_guid;
-    GUID                        dsc_guid;
 } OSS_DEVICE;
 
 static OSS_DEVICE   OSS_Devices[MAX_WAVEDRV];
@@ -236,8 +234,6 @@
 static DWORD widDsCreate(UINT wDevID, PIDSCDRIVER* drv);
 static DWORD wodDsDesc(UINT wDevID, PDSDRIVERDESC desc);
 static DWORD widDsDesc(UINT wDevID, PDSDRIVERDESC desc);
-static DWORD wodDsGuid(UINT wDevID, LPGUID pGuid);
-static DWORD widDsGuid(UINT wDevID, LPGUID pGuid);
 
 /* These strings used only for tracing */
 static const char * getCmdString(enum win_wm_message msg)
@@ -308,7 +304,6 @@
     MSG_TO_STR(DRV_QUERYDEVICEINTERFACE);
     MSG_TO_STR(DRV_QUERYDSOUNDIFACE);
     MSG_TO_STR(DRV_QUERYDSOUNDDESC);
-    MSG_TO_STR(DRV_QUERYDSOUNDGUID);
     }
 #undef MSG_TO_STR
     sprintf(unknown, "UNKNOWN(0x%04x)", msg);
@@ -1166,11 +1161,6 @@
           ossdev->duplex_out_caps.dwFormats, ossdev->duplex_out_caps.dwSupport);
 }
 
-#define INIT_GUID(guid, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8)	\
-	guid.Data1 = l; guid.Data2 = w1; guid.Data3 = w2;		\
-	guid.Data4[0] = b1; guid.Data4[1] = b2; guid.Data4[2] = b3;	\
-	guid.Data4[3] = b4; guid.Data4[4] = b5; guid.Data4[5] = b6;	\
-	guid.Data4[6] = b7; guid.Data4[7] = b8;
 /******************************************************************
  *		OSS_WaveInit
  *
@@ -1192,9 +1182,6 @@
 	}
 
         sprintf(OSS_Devices[i].interface_name, "wineoss: %s", OSS_Devices[i].dev_name);
-
-	INIT_GUID(OSS_Devices[i].ds_guid,  0xbd6dd71a, 0x3deb, 0x11d1, 0xb1, 0x71, 0x00, 0xc0, 0x4f, 0xc2, 0x00, 0x00 + i);
-	INIT_GUID(OSS_Devices[i].dsc_guid, 0xbd6dd71b, 0x3deb, 0x11d1, 0xb1, 0x71, 0x00, 0xc0, 0x4f, 0xc2, 0x00, 0x00 + i);
     }
 
     /* start with output devices */
@@ -2388,7 +2375,6 @@
     case DRV_QUERYDEVICEINTERFACE:     return wdDevInterface           (wDevID, (PWCHAR)dwParam1, dwParam2);
     case DRV_QUERYDSOUNDIFACE:	return wodDsCreate	(wDevID, (PIDSDRIVER*)dwParam1);
     case DRV_QUERYDSOUNDDESC:	return wodDsDesc	(wDevID, (PDSDRIVERDESC)dwParam1);
-    case DRV_QUERYDSOUNDGUID:	return wodDsGuid	(wDevID, (LPGUID)dwParam1);
     default:
 	FIXME("unknown message %d!\n", wMsg);
     }
@@ -3293,13 +3279,6 @@
     return MMSYSERR_NOERROR;
 }
 
-static DWORD wodDsGuid(UINT wDevID, LPGUID pGuid)
-{
-    TRACE("(%d,%p)\n",wDevID,pGuid);
-    memcpy(pGuid, &(WOutDev[wDevID].ossdev->ds_guid), sizeof(GUID));
-    return MMSYSERR_NOERROR;
-}
-
 /*======================================================================*
  *                  Low level WAVE IN implementation			*
  *======================================================================*/
@@ -4038,7 +4017,6 @@
     case DRV_QUERYDEVICEINTERFACE:     return wdDevInterface           (wDevID, (PWCHAR)dwParam1, dwParam2);
     case DRV_QUERYDSOUNDIFACE:	return widDsCreate   (wDevID, (PIDSCDRIVER*)dwParam1);
     case DRV_QUERYDSOUNDDESC:	return widDsDesc     (wDevID, (PDSDRIVERDESC)dwParam1);
-    case DRV_QUERYDSOUNDGUID:	return widDsGuid     (wDevID, (LPGUID)dwParam1);
     default:
 	FIXME("unknown message %u!\n", wMsg);
     }
@@ -4886,15 +4864,6 @@
 static DWORD widDsDesc(UINT wDevID, PDSDRIVERDESC desc)
 {
     memcpy(desc, &(WInDev[wDevID].ossdev->ds_desc), sizeof(DSDRIVERDESC));
-    return MMSYSERR_NOERROR;
-}
-
-static DWORD widDsGuid(UINT wDevID, LPGUID pGuid)
-{
-    TRACE("(%d,%p)\n",wDevID,pGuid);
-
-    memcpy(pGuid, &(WInDev[wDevID].ossdev->dsc_guid), sizeof(GUID));
-
     return MMSYSERR_NOERROR;
 }
 
Index: include/mmddk.h
===================================================================
RCS file: /home/wine/wine/include/mmddk.h,v
retrieving revision 1.20
diff -u -r1.20 mmddk.h
--- include/mmddk.h	21 Jul 2004 03:02:36 -0000	1.20
+++ include/mmddk.h	19 Aug 2004 22:46:47 -0000
@@ -91,7 +91,6 @@
 #ifdef __WINESRC__
 #define DRV_QUERYDSOUNDIFACE		(DRV_RESERVED + 20)
 #define DRV_QUERYDSOUNDDESC		(DRV_RESERVED + 21)
-#define DRV_QUERYDSOUNDGUID		(DRV_RESERVED + 22)
 #endif
 
 #define WODM_INIT		DRVM_INIT


More information about the wine-patches mailing list