如何判断是否有程序在读写硬盘分区?

举手无悔大丈夫 2009-12-08 10:46:43
RT,如何判断是否有程序在读写硬盘分区?
...全文
250 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
金卯刀 2009-12-09
  • 打赏
  • 举报
回复
建議采用 cnzdgs 說的做法...
金卯刀 2009-12-09
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 lianzhu520610 的回复:]
引用 7 楼 avan_lau 的回复:
引用 5 楼 lianzhu520610 的回复:
1、使用 DeviceIoControl 參: http://msdn.microsoft.com/en-us/library/aa363216(VS.85).aspx;
2、參數control code 傳入IOCTL_DISK_PERFORMANCE 參:http://msdn.microsoft.com/en-us/library/aa365183(VS.85).aspx;
3、執行DeviceIoControl 後,讀取DISK_PERFORMANCE 結構信息(由lpOutBuffer 傳回);
結構信息參:http://msdn.microsoft.com/en-us/library/aa363991(VS.85).aspx


这个方法得出来的是累积的量。不是即时的信息。。


看你是怎么使用的了....比如可以建立一個線程去做比對...

你可以考慮使用我后面講的方法,這個夠即時的,有變化就會通知...

程序打开的时候就要进行判断,然后锁定分区,进行操作。不需要的监视的。。
[/Quote]
不需要監視的話,傳IOCTL_CHANGER_GET_STATUS到DeviceIOControl也是可以判斷當前設備的狀態。不過相對 “以独占方式打开目标分区设备”來判斷要來的復雜。
iqyely 2009-12-09
  • 打赏
  • 举报
回复
关注,学习下。
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 cnzdgs 的回复:]
以独占方式打开目标分区设备,如果成功,就说明没有其它程序在读写。
[/Quote]
这个方法可以,不知道还有没有其他方法呢。
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 avan_lau 的回复:]
引用 5 楼 lianzhu520610 的回复:
1、使用 DeviceIoControl 參: http://msdn.microsoft.com/en-us/library/aa363216(VS.85).aspx;
2、參數control code 傳入IOCTL_DISK_PERFORMANCE 參:http://msdn.microsoft.com/en-us/library/aa365183(VS.85).aspx;
3、執行DeviceIoControl 後,讀取DISK_PERFORMANCE 結構信息(由lpOutBuffer 傳回);
結構信息參:http://msdn.microsoft.com/en-us/library/aa363991(VS.85).aspx


这个方法得出来的是累积的量。不是即时的信息。。


看你是怎么使用的了....比如可以建立一個線程去做比對...

你可以考慮使用我后面講的方法,這個夠即時的,有變化就會通知...
[/Quote]
程序打开的时候就要进行判断,然后锁定分区,进行操作。不需要的监视的。。
大肚肥肥 2009-12-09
  • 打赏
  • 举报
回复
mark
cnzdgs 2009-12-09
  • 打赏
  • 举报
回复
其它方法就麻烦了,可以用NtQuerySystemInformation查找所有句柄,再逐一取句柄对应的对象名称判断是不是硬盘分区。
金卯刀 2009-12-08
  • 打赏
  • 举报
回复
1、使用 DeviceIoControl 參: http://msdn.microsoft.com/en-us/library/aa363216(VS.85).aspx;
2、參數control code 傳入IOCTL_DISK_PERFORMANCE 參:http://msdn.microsoft.com/en-us/library/aa365183(VS.85).aspx;
3、執行DeviceIoControl 後,讀取DISK_PERFORMANCE 結構信息(由lpOutBuffer 傳回);
結構信息參:http://msdn.microsoft.com/en-us/library/aa363991(VS.85).aspx
hjkto 2009-12-08
  • 打赏
  • 举报
回复
mark
贝隆 2009-12-08
  • 打赏
  • 举报
回复
学习
金卯刀 2009-12-08
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 lianzhu520610 的回复:]
1、使用 DeviceIoControl 參: http://msdn.microsoft.com/en-us/library/aa363216(VS.85).aspx;
2、參數control code 傳入IOCTL_DISK_PERFORMANCE 參:http://msdn.microsoft.com/en-us/library/aa365183(VS.85).aspx;
3、執行DeviceIoControl 後,讀取DISK_PERFORMANCE 結構信息(由lpOutBuffer 傳回);
結構信息參:http://msdn.microsoft.com/en-us/library/aa363991(VS.85).aspx


这个方法得出来的是累积的量。不是即时的信息。。
[/Quote]

看你是怎么使用的了....比如可以建立一個線程去做比對...

你可以考慮使用我后面講的方法,這個夠即時的,有變化就會通知...
cnzdgs 2009-12-08
  • 打赏
  • 举报
回复
以独占方式打开目标分区设备,如果成功,就说明没有其它程序在读写。
  • 打赏
  • 举报
回复
1、使用 DeviceIoControl 參: http://msdn.microsoft.com/en-us/library/aa363216(VS.85).aspx;
2、參數control code 傳入IOCTL_DISK_PERFORMANCE 參:http://msdn.microsoft.com/en-us/library/aa365183(VS.85).aspx;
3、執行DeviceIoControl 後,讀取DISK_PERFORMANCE 結構信息(由lpOutBuffer 傳回);
結構信息參:http://msdn.microsoft.com/en-us/library/aa363991(VS.85).aspx



这个方法得出来的是累积的量。不是即时的信息。。
gyk120 2009-12-08
  • 打赏
  • 举报
回复
DeviceIoControl是一个不错的办法,ShChangeNotify的参数太多了,不是特别好判断
金卯刀 2009-12-08
  • 打赏
  • 举报
回复
用SHChangeNotify 搭配消息,也應該可以滿足你的需求,詳細做法,自己搜索看看

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧