[DEVMGR]
authorEric Kohl <eric.kohl@reactos.org>
Mon, 8 Jun 2015 23:54:18 +0000 (23:54 +0000)
committerEric Kohl <eric.kohl@reactos.org>
Mon, 8 Jun 2015 23:54:18 +0000 (23:54 +0000)
Display device relations.

svn path=/trunk/; revision=68084

reactos/dll/win32/devmgr/advprop.c

index 26d1097..2b83fb5 100644 (file)
@@ -1328,6 +1328,58 @@ DisplayClassProperties(IN PDEVADVPROP_INFO dap,
 }
 
 
 }
 
 
+static VOID
+DisplayDeviceRelations(
+    IN PDEVADVPROP_INFO dap,
+    IN HWND hwndListView,
+    IN ULONG ulFlags)
+{
+    ULONG ulLength = 0;
+    LPWSTR pszBuffer = NULL, pszStr;
+    INT index = 0, len;
+
+    CONFIGRET ret;
+
+    ret = CM_Get_Device_ID_List_Size_ExW(&ulLength,
+                                         dap->szDeviceID,
+                                         ulFlags,
+                                         NULL);
+    if (ret != CR_SUCCESS)
+        return;
+
+    pszBuffer = HeapAlloc(GetProcessHeap(),
+                          HEAP_ZERO_MEMORY,
+                          ulLength);
+    if (pszBuffer == NULL)
+        return;
+
+    ret = CM_Get_Device_ID_List_ExW(dap->szDeviceID,
+                                    pszBuffer,
+                                    ulLength,
+                                    ulFlags,
+                                    NULL);
+    if (ret != CR_SUCCESS)
+    {
+        HeapFree(GetProcessHeap(), 0, pszBuffer);
+        return;
+    }
+
+    pszStr = pszBuffer;
+    index = 0;
+    while (*pszStr != 0)
+    {
+        len = wcslen(pszStr) + 1;
+
+        SetListViewText(hwndListView, index, pszStr);
+
+        pszStr += len;
+        index++;
+    }
+
+    HeapFree(GetProcessHeap(), 0, pszBuffer);
+}
+
+
 static VOID
 DisplayDeviceProperties(IN PDEVADVPROP_INFO dap,
                         IN HWND hwndComboBox,
 static VOID
 DisplayDeviceProperties(IN PDEVADVPROP_INFO dap,
                         IN HWND hwndComboBox,
@@ -1400,16 +1452,23 @@ DisplayDeviceProperties(IN PDEVADVPROP_INFO dap,
                            hwndListView);
             break;
 
                            hwndListView);
             break;
 
-#if 0
         case 10: /* Ejection relation */
         case 10: /* Ejection relation */
+            DisplayDeviceRelations(dap,
+                                   hwndListView,
+                                   CM_GETIDLIST_FILTER_EJECTRELATIONS);
             break;
 
         case 11: /* Removal relations */
             break;
 
         case 11: /* Removal relations */
+            DisplayDeviceRelations(dap,
+                                   hwndListView,
+                                   CM_GETIDLIST_FILTER_REMOVALRELATIONS);
             break;
 
         case 12: /* Bus relation */
             break;
 
         case 12: /* Bus relation */
+            DisplayDeviceRelations(dap,
+                                   hwndListView,
+                                   CM_GETIDLIST_FILTER_BUSRELATIONS);
             break;
             break;
-#endif
 
         case 13: /* Device Upper Filters */
             DisplayDevicePropertyText(dap,
 
         case 13: /* Device Upper Filters */
             DisplayDevicePropertyText(dap,