Revision e9c08226

b/block-raw.c
1174 1174
    BDRVRawState *s = bs->opaque;
1175 1175
    LARGE_INTEGER l;
1176 1176
    ULARGE_INTEGER available, total, total_free;
1177
    DISK_GEOMETRY dg;
1177
    DISK_GEOMETRY_EX dg;
1178 1178
    DWORD count;
1179 1179
    BOOL status;
1180 1180

  
......
1190 1190
        l.QuadPart = total.QuadPart;
1191 1191
        break;
1192 1192
    case FTYPE_HARDDISK:
1193
        status = DeviceIoControl(s->hfile, IOCTL_DISK_GET_DRIVE_GEOMETRY,
1193
        status = DeviceIoControl(s->hfile, IOCTL_DISK_GET_DRIVE_GEOMETRY_EX,
1194 1194
                                 NULL, 0, &dg, sizeof(dg), &count, NULL);
1195
        if (status != FALSE) {
1196
            l.QuadPart = dg.Cylinders.QuadPart * dg.TracksPerCylinder
1197
                * dg.SectorsPerTrack * dg.BytesPerSector;
1195
        if (status != 0) {
1196
            l = dg.DiskSize;
1198 1197
        }
1199 1198
        break;
1200 1199
    default:

Also available in: Unified diff