Maarten Lankhorst : mmdevapi: Implement IMMDeviceEnumerator::GetDevice.

Alexandre Julliard julliard at winehq.org
Mon Mar 15 12:19:45 CDT 2010


Module: wine
Branch: master
Commit: 55b48ff66299a07d41756c1b199806846d4fc415
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=55b48ff66299a07d41756c1b199806846d4fc415

Author: Maarten Lankhorst <m.b.lankhorst at gmail.com>
Date:   Sun Feb 21 14:26:43 2010 +0100

mmdevapi: Implement IMMDeviceEnumerator::GetDevice.

---

 dlls/mmdevapi/devenum.c |   26 ++++++++++++++++++++++++--
 1 files changed, 24 insertions(+), 2 deletions(-)

diff --git a/dlls/mmdevapi/devenum.c b/dlls/mmdevapi/devenum.c
index cbe4ab0..f39fe97 100644
--- a/dlls/mmdevapi/devenum.c
+++ b/dlls/mmdevapi/devenum.c
@@ -809,9 +809,31 @@ static HRESULT WINAPI MMDevEnum_GetDefaultAudioEndpoint(IMMDeviceEnumerator *ifa
 static HRESULT WINAPI MMDevEnum_GetDevice(IMMDeviceEnumerator *iface, const WCHAR *name, IMMDevice **device)
 {
     MMDevEnumImpl *This = (MMDevEnumImpl*)iface;
+    DWORD i=0;
+    IMMDevice *dev = NULL;
+
     TRACE("(%p)->(%s,%p)\n", This, debugstr_w(name), device);
-    FIXME("stub\n");
-    return E_NOTIMPL;
+    for (i = 0; i < MMDevice_count; ++i)
+    {
+        WCHAR *str;
+        dev = (IMMDevice*)MMDevice_head[i];
+        IMMDevice_GetId(dev, &str);
+
+        if (str && !lstrcmpW(str, name))
+        {
+            CoTaskMemFree(str);
+            break;
+        }
+        CoTaskMemFree(str);
+    }
+    if (dev)
+    {
+        IUnknown_AddRef(dev);
+        *device = dev;
+        return S_OK;
+    }
+    WARN("Could not find device %s\n", debugstr_w(name));
+    return E_NOTFOUND;
 }
 
 static HRESULT WINAPI MMDevEnum_RegisterEndpointNotificationCallback(IMMDeviceEnumerator *iface, IMMNotificationClient *client)




More information about the wine-cvs mailing list