阅读:1653回复:5
取磁盘大小的问题,郁闷了……使用 IoBuildDeviceIoControlRequest(IOCTL_DISK_GET_DRIVE_GEOMETRY_EX, pdev, NULL, 0, pdisk_geo, sizeof(DISK_GEOMETRY_EX), FALSE,NULL,&iostatus ); 发下去的请求怎么返回来DiskSize和硬盘大小不一致啊?? 我的虚拟机是4G硬盘,4293623552个BYTE 这是DUMP出来的结果 diskgeo.DiskSize = 68152320 diskgeo.Geometry.BytesPerSector = 512 diskgeo.Geometry.Cylinders.QuadPart = 522 diskgeo.Geometry.SectorsPerTrack = 0 diskgeo.Geometry.TracksPerCylinder = 63 如果我没理解错BytesPerSector *Cylinders*SectorsPerTrack *TracksPerCylinder = DiskSize应该成立吧 为什么SectorsPerTrack 会是0啊。 我在虚拟机上测试的。真郁闷 |
|
沙发#
发布于:2008-06-20 15:35
![]() Print的问题,数据没错…… |
|
板凳#
发布于:2008-06-21 18:07
data is correct
|
|
|
地板#
发布于:2008-06-24 23:09
最好是发SCSI的25命令查询,最准确
|
|
地下室#
发布于:2008-06-27 13:26
一般情况下geo 的值是通过SCSI的25()命令查询返回值再计数出来的
用read_capacity吧 |
|
|
5楼#
发布于:2008-06-27 18:53
ding
|
|
|