From 72f4f89fceaaf4d58b3d64088f0493a9d08c2de9 Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Sun, 4 Sep 2005 14:40:12 +0000 Subject: [PATCH] Implement CM_Get_Class_Name_ExA. svn path=/trunk/; revision=17635 --- reactos/lib/setupapi/cfgmgr.c | 34 ++++++++++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/reactos/lib/setupapi/cfgmgr.c b/reactos/lib/setupapi/cfgmgr.c index 9acb520fbe4..cc8ae37fcfa 100644 --- a/reactos/lib/setupapi/cfgmgr.c +++ b/reactos/lib/setupapi/cfgmgr.c @@ -474,9 +474,39 @@ CONFIGRET WINAPI CM_Get_Class_Name_ExA( LPGUID ClassGuid, PCHAR Buffer, PULONG pulLength, ULONG ulFlags, HMACHINE hMachine) { - FIXME("%p %p %p %lx %lx\n", + WCHAR szBuffer[MAX_CLASS_NAME_LEN]; + CONFIGRET ret = CR_SUCCESS; + ULONG ulLength; + ULONG ulOrigLength; + + TRACE("%p %p %p %lx %lx\n", ClassGuid, Buffer, pulLength, ulFlags, hMachine); - return CR_FAILURE; + + if (ClassGuid == NULL || Buffer == NULL || pulLength == NULL) + return CR_INVALID_POINTER; + + ulOrigLength = *pulLength; + *pulLength = 0; + + ulLength = MAX_CLASS_NAME_LEN; + ret = CM_Get_Class_Name_ExW(ClassGuid, szBuffer, &ulLength, + ulFlags, hMachine); + if (ret == CR_SUCCESS) + { + if (WideCharToMultiByte(CP_ACP, + 0, + szBuffer, + ulLength, + Buffer, + ulOrigLength, + NULL, + NULL) == 0) + ret = CR_FAILURE; + else + *pulLength = lstrlenA(Buffer) + 1; + } + + return ret; }