]> xenbits.xensource.com Git - qemu-xen-3.3-testing.git/commitdiff
Physical hard disk drive for win32, by Stefan Weil.
authorths <ths@c046a42c-6fe2-441c-8c8c-71466251a162>
Sat, 20 Oct 2007 20:40:05 +0000 (20:40 +0000)
committerths <ths@c046a42c-6fe2-441c-8c8c-71466251a162>
Sat, 20 Oct 2007 20:40:05 +0000 (20:40 +0000)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3420 c046a42c-6fe2-441c-8c8c-71466251a162

block-raw.c

index 2f2e19f9bbbe0f3a1a007959cb85f04de9f414b7..1e5e5d15ed02593f0f50646a56b619d61ca0af31 100644 (file)
@@ -1174,7 +1174,7 @@ static int64_t raw_getlength(BlockDriverState *bs)
     BDRVRawState *s = bs->opaque;
     LARGE_INTEGER l;
     ULARGE_INTEGER available, total, total_free;
-    DISK_GEOMETRY dg;
+    DISK_GEOMETRY_EX dg;
     DWORD count;
     BOOL status;
 
@@ -1190,11 +1190,10 @@ static int64_t raw_getlength(BlockDriverState *bs)
         l.QuadPart = total.QuadPart;
         break;
     case FTYPE_HARDDISK:
-        status = DeviceIoControl(s->hfile, IOCTL_DISK_GET_DRIVE_GEOMETRY,
+        status = DeviceIoControl(s->hfile, IOCTL_DISK_GET_DRIVE_GEOMETRY_EX,
                                  NULL, 0, &dg, sizeof(dg), &count, NULL);
-        if (status != FALSE) {
-            l.QuadPart = dg.Cylinders.QuadPart * dg.TracksPerCylinder
-                * dg.SectorsPerTrack * dg.BytesPerSector;
+        if (status != 0) {
+            l = dg.DiskSize;
         }
         break;
     default: