From 55b48ff66299a07d41756c1b199806846d4fc415 Mon Sep 17 00:00:00 2001 From: Maarten Lankhorst Date: Sun, 21 Feb 2010 14:26:43 +0100 Subject: [PATCH] mmdevapi: Implement IMMDeviceEnumerator::GetDevice. --- dlls/mmdevapi/devenum.c | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/dlls/mmdevapi/devenum.c b/dlls/mmdevapi/devenum.c index cbe4ab08450..f39fe971b2b 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)