Juan Lang : setupapi: Implement SetupDiGetClassDescriptionExA.

Alexandre Julliard julliard at winehq.org
Fri Sep 21 07:23:06 CDT 2007


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

Author: Juan Lang <juan.lang at gmail.com>
Date:   Thu Sep 20 09:15:16 2007 -0700

setupapi: Implement SetupDiGetClassDescriptionExA.

---

 dlls/setupapi/devinst.c |   48 +++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 46 insertions(+), 2 deletions(-)

diff --git a/dlls/setupapi/devinst.c b/dlls/setupapi/devinst.c
index 9476ee2..10bf481 100644
--- a/dlls/setupapi/devinst.c
+++ b/dlls/setupapi/devinst.c
@@ -1325,8 +1325,52 @@ BOOL WINAPI SetupDiGetClassDescriptionExA(
         PCSTR MachineName,
         PVOID Reserved)
 {
-  FIXME("\n");
-  return FALSE;
+    HKEY hKey;
+    DWORD dwLength;
+
+    hKey = SetupDiOpenClassRegKeyExA(ClassGuid,
+                                     KEY_ALL_ACCESS,
+                                     DIOCR_INSTALLER,
+                                     MachineName,
+                                     Reserved);
+    if (hKey == INVALID_HANDLE_VALUE)
+    {
+	WARN("SetupDiOpenClassRegKeyExA() failed (Error %u)\n", GetLastError());
+	return FALSE;
+    }
+
+    if (RequiredSize != NULL)
+    {
+	dwLength = 0;
+	if (RegQueryValueExA(hKey,
+			     NULL,
+			     NULL,
+			     NULL,
+			     NULL,
+			     &dwLength))
+	{
+	    RegCloseKey(hKey);
+	    return FALSE;
+	}
+
+	*RequiredSize = dwLength;
+    }
+
+    dwLength = ClassDescriptionSize;
+    if (RegQueryValueExA(hKey,
+			 NULL,
+			 NULL,
+			 NULL,
+			 (LPBYTE)ClassDescription,
+			 &dwLength))
+    {
+	RegCloseKey(hKey);
+	return FALSE;
+    }
+
+    RegCloseKey(hKey);
+
+    return TRUE;
 }
 
 /***********************************************************************




More information about the wine-cvs mailing list