chengchenz
驱动牛犊
驱动牛犊
  • 注册日期2005-12-09
  • 最后登录2009-12-16
  • 粉丝0
  • 关注0
  • 积分33分
  • 威望113点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
阅读:1614回复:4

请教:diskperf过滤驱动改装隐藏磁盘容量的问题。

楼主#
更多 发布于:2008-12-19 20:21
目前想隐藏硬盘最后一部分容量,即最后一部分对系统不可见。
现在假设让系统只能看到前1/2的容量,包括各种在Windows系统上运行的分区软件。
在diskperf中DbgPrint看到系统刷新磁盘信息时只调用了下列IO Control
IOCTL_DISK_GET_DRIVE_GEOMETRY
IOCTL_DISK_GET_DRIVE_LAYOUT
IOCTL_DISK_GET_DRIVE_LAYOUT_EX
IOCTL_DISK_GET_PARTITION_INFO_EX
IOCTL_SCSI_GET_ADDRESS
IOCTL_STORAGE_GET_DEVICE_NUMBER
IOCTL_STORAGE_GET_HOTPLUG_INFO
IOCTL_STORAGE_GET_MEDIA_TYPES_EX
IOCTL_STORAGE_PREDICT_FAILURE
IOCTL_STORAGE_QUERY_PROPERTY

我现在的做法是用diskperf来过滤,在
IOCTL_DISK_GET_DRIVE_GEOMETRY
IOCTL_STORAGE_GET_MEDIA_TYPES_EX
IOCTL_DISK_GET_LENGTH_INFO
IOCTL_DISK_GET_DRIVE_GEOMETRY_EX
IOCTL_DISK_GET_MEDIA_TYPES
IOCTL_STORAGE_GET_MEDIA_TYPES
IOCTL_STORAGE_GET_MEDIA_TYPES_EX
中将Cylinders减半。

现在用运行于Windows上的Partition Magic已经只能看都磁盘容量减半了,
但Windows自带的磁盘管理员(diskmgmt.msc)却还是看到原有的容量。
(大致看了一下,磁盘管理员好像是调用本机的Logical Disk Manager Administrative Service这个DCOM组件来读取信息的,
用Depends查看了这个DCOM组件程序dmadmin.exe,他也调用了DeviceIoControl,但不知他是否还从别的途径拿磁盘信息了?)
请问各位兄弟有做过类似的东西吗?
我需要如何才能让磁盘管理员也看到我减半后的容量?

chengchenz
驱动牛犊
驱动牛犊
  • 注册日期2005-12-09
  • 最后登录2009-12-16
  • 粉丝0
  • 关注0
  • 积分33分
  • 威望113点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2009-03-08 00:14
这个问题我已解决了。
Windows自带的磁盘管理器是用IOCTL_DISK_GET_PARTITION_INFO /I OCTL_DISK_GET_PARTITION_INFO_EX来确定磁盘大小的。
因此还需要在diskperf的DeviceIoControl中修改对磁盘本身(\Device\Harddisk0\DR0之类,也就是Partition0)所执行的IOCTL_DISK_GET_PARTITION_INFO /I OCTL_DISK_GET_PARTITION_INFO_EX返回值。
游客

返回顶部