どなたかご教授いただけませんでしょうか?
今、FDに対するアクセス(ファイルの作成・更新など)を監視する
プログラムを作成したいと考えています。
ハードディスク内の特定のディレクトリを監視するときと同じように
ReadDirectoryChangesW()を使ってサンプルプログラムを作成し、
ハードディスクでは正常に動作させることができています。
ただしFDに対して同じものを利用すると、FDが装填されていない場合に
CreateFile()がエラーとなり、正常に監視をおこなうことができません。
調べてみると、ReadDirectoryChangesW()は第一引数にHANDLEを要求しますが
この子がFILE_LIST_DIRECTORYアクセス権を持ってCreateFile()された
HANDLEでないといけないようです。FDを装填しない状態で、Aドライブに
対してFILE_LIST_DIRECTORYアクセス権付きでCreateFile()すると
ハンドルが正常に取得できません。
そこで教えて頂きたいのですが、
・FDを装填しない状態でもFILE_LIST_DIRECTORYアクセス権付きで
CreateFile()が正常にハンドル取得できる方法があるのか?
・上記が駄目として、FDへのアクセスをリアルタイムで監視でき、
そのトリガに基づいてReadDirectoryChangesW()を使用する
方法等があるのか?
・根本的に、ReadDirectoryChangesW()以外の方法でFDアクセスを
監視できるのか?
について、アドバイスを頂けませんでしょうか?
宜しくお願い致します。
OSや環境は?
まず、FDが装填されていない状態でエラーになるのを無理
やり行なうのは、ナンセンスかと・・・
エラーするなら、『FDが装填されていないので監視を断念』
と言うことにはならないのでしょうか?
FDと言うデバイスを特定せずにアクセス監視するならば、
フィルタードライバーを作成してやるのが一番安全で高速
かと・・・
たまたまですが・・・
WindowsXPフィルタドライバプログラミング
入門と実践 技術評論社 ISBN4-7741-1666-1 \3250
この書籍のp171〜FDDアクセスの章が掲載されていますの
で、ご参考までに・・・
以上。
お礼が遅くなりまして申し訳ございません。
ご回答ありがとうございます。
OSはWindowsXPを対象に考えていました。
仰るとおり、エラーとなるものを監視しようとする
発想が間違っていますよね。
実は恥ずかしながらフィルタドライバなるものの存在を
知りませんでした。FDドライブの監視手法はかなり調査
したのですが、うまく見つけられなかったです…
早速紹介頂いた本を入手して研究してみたいと思います!
お忙しい中ありがとうございました!
失礼いたします。
ツイート | ![]() |