小默

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

目前想隐藏硬盘最后一部分容量,即最后一部分对系统不可见。
现在假设让系统只能看到前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,但不知他是否还从别的途径拿磁盘信息了?)
请问各位兄弟有做过类似的东西吗?
我需要如何才能让磁盘管理员也看到我减半后的容量?
------------------------------------------------------------------------------------
这个问题我已解决了。
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返回值。
------------------------------------------------------------------------------------

posted on 2010-02-06 00:16 小默 阅读(1448) 评论(0)  编辑 收藏 引用 所属分类: Windows


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


导航

统计

留言簿(13)

随笔分类(287)

随笔档案(289)

漏洞

搜索

积分与排名

最新评论

阅读排行榜