+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);
+}
+
+