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

解决方案 »

  1.   

    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
      

  2.   

    用SHChangeNotify 搭配消息,也應該可以滿足你的需求,詳細做法,自己搜索看看
      

  3.   

    DeviceIoControl是一个不错的办法,ShChangeNotify的参数太多了,不是特别好判断
      

  4.   

    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这个方法得出来的是累积的量。不是即时的信息。。
      

  5.   

    不需要監視的話,傳IOCTL_CHANGER_GET_STATUS到DeviceIOControl也是可以判斷當前設備的狀態。不過相對 “以独占方式打开目标分区设备”來判斷要來的復雜。
      

  6.   

    建議采用 cnzdgs 說的做法...
      

  7.   

    其它方法就麻烦了,可以用NtQuerySystemInformation查找所有句柄,再逐一取句柄对应的对象名称判断是不是硬盘分区。