- SetupDiGetDeviceInterfaceDetail(devset, &devif, 0, 0, &detsz, 0);\r
- if(!(devdetail = malloc(detsz))) {\r
- fprintf(stderr, "failed to allocate device interface detail buffer (size: %lu)\n", (unsigned long)detsz);\r
- return 1;\r
+ regtype = SPDRP_PHYSICAL_DEVICE_OBJECT_NAME;\r
+ SetupDiGetDeviceRegistryProperty(devset, &devdata, SPDRP_FRIENDLYNAME,\r
+ ®type, (unsigned char*)devname, sizeof devname, &size);\r
+\r
+ printf("Device %d: %s\n", devidx, devname);\r
+\r
+ ifidx = 0;\r
+ for(;;) {\r
+ memset(&devif, 0, sizeof devif);\r
+ devif.cbSize = sizeof devif;\r
+ if(!SetupDiEnumDeviceInterfaces(devset, &devdata, &GUID_DEVINTERFACE_DISK, ifidx, &devif)) {\r
+ if(GetLastError() == ERROR_NO_MORE_ITEMS) break;\r
+ ifidx++;\r
+ continue;\r
+ }\r
+\r
+ SetupDiGetDeviceInterfaceDetail(devset, &devif, 0, 0, &size, 0);\r
+ if(!(devdetail = malloc(size))) {\r
+ fprintf(stderr, "failed to allocate device interface detail buffer (size: %lu)\n", (unsigned long)size);\r
+ return 1;\r
+ }\r
+ devdetail->cbSize = sizeof *devdetail;\r
+ SetupDiGetDeviceInterfaceDetail(devset, &devif, devdetail, size, 0, 0);\r
+ printf(" path: %s\n", devdetail->DevicePath);\r
+ free(devdetail);\r
+\r
+ ifidx++;\r