From a18b61a530cd901049b376b02772a1b072578612 Mon Sep 17 00:00:00 2001 From: Juan Lang Date: Mon, 24 Sep 2007 13:32:46 -0700 Subject: [PATCH] Implement SetupDiGetClassDevsExA --- dlls/setupapi/devinst.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++ dlls/setupapi/stubs.c | 11 ----------- 2 files changed, 47 insertions(+), 11 deletions(-) diff --git a/dlls/setupapi/devinst.c b/dlls/setupapi/devinst.c index 503eaa5..2459ccd 100644 --- a/dlls/setupapi/devinst.c +++ b/dlls/setupapi/devinst.c @@ -1769,6 +1769,53 @@ end: return ret; } +/*********************************************************************** + * SetupDiGetClassDevsExA (SETUPAPI.@) + */ +HDEVINFO WINAPI SetupDiGetClassDevsExA( + const GUID *class, + PCSTR enumstr, + HWND parent, + DWORD flags, + HDEVINFO deviceset, + PCSTR machine, + PVOID reserved) +{ + HDEVINFO ret; + LPWSTR enumstrW = NULL, machineW = NULL; + + if (enumstr) + { + int len = MultiByteToWideChar(CP_ACP, 0, enumstr, -1, NULL, 0); + enumstrW = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR)); + if (!enumstrW) + { + ret = (HDEVINFO)INVALID_HANDLE_VALUE; + goto end; + } + MultiByteToWideChar(CP_ACP, 0, enumstr, -1, enumstrW, len); + } + if (machine) + { + int len = MultiByteToWideChar(CP_ACP, 0, machine, -1, NULL, 0); + machineW = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR)); + if (!machineW) + { + HeapFree(GetProcessHeap(), 0, enumstrW); + ret = (HDEVINFO)INVALID_HANDLE_VALUE; + goto end; + } + MultiByteToWideChar(CP_ACP, 0, machine, -1, machineW, len); + } + ret = SetupDiGetClassDevsExW(class, enumstrW, parent, flags, deviceset, + machineW, reserved); + HeapFree(GetProcessHeap(), 0, enumstrW); + HeapFree(GetProcessHeap(), 0, machineW); + +end: + return ret; +} + static void SETUPDI_AddDeviceInterfaces(SP_DEVINFO_DATA *dev, HKEY key, const GUID *interface) { diff --git a/dlls/setupapi/stubs.c b/dlls/setupapi/stubs.c index 3342a65..de1fec1 100644 --- a/dlls/setupapi/stubs.c +++ b/dlls/setupapi/stubs.c @@ -50,17 +50,6 @@ DWORD WINAPI suErrorToIds16( WORD w1, WO } /*********************************************************************** - * (SETUPAPI.@) - * - * NO WINAPI in description given - */ -HDEVINFO WINAPI SetupDiGetClassDevsExA(const GUID *class, PCSTR filter, HWND parent, DWORD flags, HDEVINFO deviceset, PCSTR machine, PVOID reserved) -{ - FIXME("filter %s machine %s\n",debugstr_a(filter),debugstr_a(machine)); - return FALSE; -} - -/*********************************************************************** * CM_Connect_MachineW (SETUPAPI.@) */ DWORD WINAPI CM_Connect_MachineW(LPCWSTR name, void * machine) -- 1.4.1