阅读:1620回复:3
怎样通知系统磁盘信息已经被修改呢?
我用程序修改了磁盘的分区信息,怎么通知系统磁盘的相关信息已经被我修改了呢?比如原来U盘分区大小为64M,经过我的修改之后变成42M了,怎么让系统知道磁盘已经变成42M了,不然文件系统往U盘里面写文件时候还以为U盘为64M的
请教大侠好的解决方案!先谢谢了 |
|
最新喜欢:![]() |
沙发#
发布于:2005-03-14 05:29
得看你的驱动在整个disk跟file system的位置来定了
如果你的驱动是个miniport的驱动 只用fail传递给你的srb 并且设置sensekey = SCSI_SENSE_UNIT_ATTENTION 这样disk.sys就会为你的removable device设置DO_VERIFY_VOLUME标记..并且fail相关的irp 这样filesystem就会进行一次verify remount. 如果你不是上述device stack的搭建者 可以试着发送下面这个io control到vbp所指向的real device IOCTL_DISK_INTERNAL_SET_VERIFY 他不需要输入输出参数.而且只能在kernal mode下面发送才会引起disk.sys设置DO_VERIFY_VOLUME标记 如果你什么都不是..可以试着发送IOCTL_DISK_SET_PARTITION_INFO_EX 这个io control看看....这个在msdn里面有描述的 或者是你手动修改了分区表?然后要让系统知道这个改变? 如果这样的话 TARGET_DEVICE_CUSTOM_NOTIFICATION Notification = {0}; Notification.Event = GUID_IO_DISK_LAYOUT_CHANGE; Notification.Version = 1; Notification.Size = (USHORT)FIELD_OFFSET(TARGET_DEVICE_CUSTOM_NOTIFICATION, CustomDataBuffer); Notification.FileObject = NULL; Notification.NameBufferOffset = -1; IoReportTargetDeviceChangeAsynchronous(pPhysicalDevice,&Notification,NULL,NULL); 至于参数什么的.参考msdn吧 希望对你有帮助吧 |
|
板凳#
发布于:2005-03-14 11:06
如果我在磁盘中用绝对读写的方法手动创建一个文件,那我如何通知文件系统,然后我在资源管理器中可以看到?
|
|
地板#
发布于:2005-03-19 18:06
如果我在磁盘中用绝对读写的方法手动创建一个文件,那我如何通知文件系统,然后我在资源管理器中可以看到? 同样关注中。。。 :D |
|