[PATCH 8/9] setupapi: support DeviceID as enumerator
Donat Enikeev
donat at enikeev.net
Mon Apr 24 15:52:33 CDT 2017
Based on staging patches from: Michael Muller <michael at fds-team.de> and Sebastian Lackner <sebastian at fds-team.de>
Signed-off-by: Donat Enikeev <donat at enikeev.net>
---
dlls/setupapi/devinst.c | 25 ++++++++++++++++++++++++-
1 file changed, 24 insertions(+), 1 deletion(-)
diff --git a/dlls/setupapi/devinst.c b/dlls/setupapi/devinst.c
index 3f56a0c..312f364 100644
--- a/dlls/setupapi/devinst.c
+++ b/dlls/setupapi/devinst.c
@@ -2375,8 +2375,31 @@ static void SETUPDI_EnumerateDevices(HDEVINFO DeviceInfoSet, const GUID *class,
&enumStrKey);
if (!l)
{
- SETUPDI_EnumerateMatchingDevices(DeviceInfoSet, enumstr,
+
+ WCHAR *enumerator, *device;
+ HKEY devKey;
+
+ if (!strchrW(enumstr, '\\'))
+ {
+ SETUPDI_EnumerateMatchingDevices(DeviceInfoSet, enumstr,
enumStrKey, class, flags);
+ }
+ else if ((enumerator = strdupW(enumstr)))
+ {
+ /* Both enumerator and device provided, enumerating instances */
+ device = strchrW(enumerator, '\\');
+ *device++ = 0;
+
+ l = RegOpenKeyExW(enumKey, enumstr, 0, KEY_READ, &devKey);
+ if (!l)
+ {
+ SETUPDI_EnumerateMatchingDeviceInstances(DeviceInfoSet, enumerator, device,
+ devKey, class, flags);
+ RegCloseKey(devKey);
+ }
+
+ HeapFree(GetProcessHeap(), 0, enumerator);
+ }
RegCloseKey(enumStrKey);
}
}
--
2.7.4
More information about the wine-patches
mailing list