projects
/
rawdisktest
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
cross-compile when not building on windows
[rawdisktest]
/
src
/
main.c
diff --git
a/src/main.c
b/src/main.c
index
8f7b239
..
c1da2d9
100644
(file)
--- a/
src/main.c
+++ b/
src/main.c
@@
-11,10
+11,12
@@
int main(int argc, char **argv)
{
\r
int devidx, ifidx;
\r
HDEVINFO devset;
\r
{
\r
int devidx, ifidx;
\r
HDEVINFO devset;
\r
- SP_DEVINFO_DATA devinfo;
\r
+ SP_DEVINFO_DATA devdata;
\r
SP_DEVICE_INTERFACE_DATA devif;
\r
SP_DEVICE_INTERFACE_DETAIL_DATA_A *devdetail;
\r
SP_DEVICE_INTERFACE_DATA devif;
\r
SP_DEVICE_INTERFACE_DETAIL_DATA_A *devdetail;
\r
- DWORD detsz;
\r
+ DWORD size;
\r
+ DWORD regtype;
\r
+ char devname[1024];
\r
\r
if((devset = SetupDiGetClassDevs(&GUID_DEVINTERFACE_DISK, 0, 0,
\r
DIGCF_PRESENT | DIGCF_DEVICEINTERFACE)) == INVALID_HANDLE_VALUE) {
\r
\r
if((devset = SetupDiGetClassDevs(&GUID_DEVINTERFACE_DISK, 0, 0,
\r
DIGCF_PRESENT | DIGCF_DEVICEINTERFACE)) == INVALID_HANDLE_VALUE) {
\r
@@
-24,47
+26,45
@@
int main(int argc, char **argv)
\r
devidx = 0;
\r
for(;;) {
\r
\r
devidx = 0;
\r
for(;;) {
\r
- memset(&devinfo, 0, sizeof devinfo);
\r
- devinfo.cbSize = sizeof devinfo;
\r
- if(!SetupDiEnumDeviceInfo(devset, devidx, &devinfo)) {
\r
- if(GetLastError() == ERROR_NO_MORE_ITEMS) {
\r
- printf("no such device: %d\n", devidx);
\r
- break;
\r
- }
\r
+ memset(&devdata, 0, sizeof devdata);
\r
+ devdata.cbSize = sizeof devdata;
\r
+ if(!SetupDiEnumDeviceInfo(devset, devidx, &devdata)) {
\r
+ if(GetLastError() == ERROR_NO_MORE_ITEMS) break;
\r
devidx++;
\r
continue;
\r
}
\r
\r
devidx++;
\r
continue;
\r
}
\r
\r
- printf("device %d:\n", devidx);
\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
ifidx = 0;
\r
for(;;) {
\r
memset(&devif, 0, sizeof devif);
\r
devif.cbSize = sizeof devif;
\r
- if(!SetupDiEnumDeviceInterfaces(devset, &devinfo, &GUID_DEVINTERFACE_DISK, ifidx, &devif)) {
\r
- if(GetLastError() == ERROR_NO_MORE_ITEMS) {
\r
- printf("no such interface: %d\n", ifidx);
\r
- break;
\r
- }
\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
ifidx++;
\r
continue;
\r
}
\r
\r
- 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
+ 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
return 1;
\r
}
\r
- devdetail->cbSize = detsz;
\r
- SetupDiGetDeviceInterfaceDetail(devset, &devif, devdetail, detsz, 0, 0);
\r
- printf("device %d.%d path: %s\n", devidx, ifidx, devdetail->DevicePath);
\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
}
\r
free(devdetail);
\r
\r
ifidx++;
\r
}
\r
- printf("found %d interfaces\n", ifidx);
\r
+
\r
devidx++;
\r
devidx++;
\r
+ printf("found %d devices\n", devidx);
\r
}
\r
}
\r
-
\r
- printf("found %d devices\n", devidx);
\r
return 0;
\r
}
\r
return 0;
\r
}
\r