chengchenz
驱动牛犊
驱动牛犊
  • 注册日期2005-12-09
  • 最后登录2009-12-16
  • 粉丝0
  • 关注0
  • 积分33分
  • 威望113点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
阅读:1612回复: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,但不知他是否还从别的途径拿磁盘信息了?)
请问各位兄弟有做过类似的东西吗?
我需要如何才能让磁盘管理员也看到我减半后的容量?

clinton81
驱动牛犊
驱动牛犊
  • 注册日期2007-02-27
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分73分
  • 威望176点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2009-02-21 16:27
我现在也遇到这个问题,请问有人能告知为何吗?
generalos
驱动牛犊
驱动牛犊
  • 注册日期2008-10-23
  • 最后登录2011-04-20
  • 粉丝0
  • 关注0
  • 积分63分
  • 威望477点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2009-02-23 15:13
这种方法不行,得用LOW。。。
驱网无线,快乐无限
babanake
驱动牛犊
驱动牛犊
  • 注册日期2008-06-04
  • 最后登录2012-10-08
  • 粉丝0
  • 关注0
  • 积分24分
  • 威望196点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2009-03-02 15:13
感兴趣
很好 驱动
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返回值。
游客

返回顶部