pk8995
驱动牛犊
驱动牛犊
  • 注册日期2006-11-12
  • 最后登录2010-04-29
  • 粉丝0
  • 关注0
  • 积分11分
  • 威望78点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
阅读:1654回复:5

取磁盘大小的问题,郁闷了……

楼主#
更多 发布于:2008-06-20 15:26

使用
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啊。
我在虚拟机上测试的。真郁闷
pk8995
驱动牛犊
驱动牛犊
  • 注册日期2006-11-12
  • 最后登录2010-04-29
  • 粉丝0
  • 关注0
  • 积分11分
  • 威望78点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2008-06-20 15:35

Print的问题,数据没错……
jl2004
驱动小牛
驱动小牛
  • 注册日期2007-04-10
  • 最后登录2011-02-22
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望276点
  • 贡献值0点
  • 好评度129点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2008-06-21 18:07
data is correct
向前,向前,向前....
ciggar
驱动牛犊
驱动牛犊
  • 注册日期2004-03-01
  • 最后登录2010-06-02
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望48点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
地板#
发布于:2008-06-24 23:09
最好是发SCSI的25命令查询,最准确
newkey
驱动小牛
驱动小牛
  • 注册日期2002-10-03
  • 最后登录2013-10-13
  • 粉丝1
  • 关注0
  • 积分45分
  • 威望392点
  • 贡献值1点
  • 好评度90点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2008-06-27 13:26
一般情况下geo 的值是通过SCSI的25()命令查询返回值再计数出来的

用read_capacity吧
www.xDrv.com
jl2004
驱动小牛
驱动小牛
  • 注册日期2007-04-10
  • 最后登录2011-02-22
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望276点
  • 贡献值0点
  • 好评度129点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2008-06-27 18:53
ding
向前,向前,向前....
游客

返回顶部