はじめまして。
今、LockFileでファイルをロックをしていますが、他のプロセスがロックしている
場合に、「プロセスはファイルにアクセスできません。別のプロセスが使用中です」
と出力されます。
ロックされているのがバレバレになるのでメッセージ(エラー番号)をロックと
同時に差し替えたいのですがどうすればよろしいでしょうか。
どなたか教えて頂けないでしょうか。
よろしくお願い致します。
他プロセスが既にロックしているファイルを自プロセスがロックしようとしたときに、
の話ですか?
だったら LockFile の戻り値(と、必要ならば GetLastError の戻り値)を見て、何な
りと好きなようにメッセージボックスを出せばいいだけだと思いますが。
何が問題なのでしょうか?
自プロセスが既にロックしているファイルを他プロセスが操作しようとしたときに…の
場合、基本的には無理だと思います。
タイトルに「他のプロセスの」って書いてありましたね。すいませんでした。
ロックしているのがバレバレでは何がまずいんでしょうか?
メッセージだけ差し替えても、当然ですが、他のファイルの方が操作を続行できるわけ
ではありませんが…。
シャノンさん、ご回答ありがとうございます。
おっしゃっている通り、ロックされているので共有/排他ロックされているので
抜き出しはできないのですが、一般ユーザーがロックを何かプロセスが動いて
実行されているという事を不可視にしたいのです。
ロックがプロセスで実施しているとそのプロセスを殺せばロックが外れる
と思い色々操作されますので、Windowsのアクセス制御で実施している様な
偽装をメッセージを差し替えて行いたいのです。
(プロセスが殺せなくする事は、サービス化し既にできておりますが予防の為)
何か方法をご存知でしたら教えて頂けないでしょうか。
よろしくお願いたします。
相手のプロセスが呼び出す API をフックすれば可能だと思います。
GetLastError をフックして、「プロセスはファイルにアクセスできません。別のプロセ
スが使用中です」のエラーコードを返そうとしているときに、違うのを返すとか。
個人的に、そこまでの労力をかけるに値することとは思えないのですが…
シャノンさん、ご回答ありがとうございます。
> 相手のプロセスが呼び出す API をフックすれば可能だと思います。
> GetLastError をフックして、「プロセスはファイルにアクセスできません。別のプロ
セ
> スが使用中です」のエラーコードを返そうとしているときに、違うのを返すとか。
残念ながら、ロック対象ファイルが限定されていない為、起動ソフトも不特定になり
ますので不可能と思います。
現在、同一の事をドライバーウェアで開発し実装してますが、
簡便化するためにVC++化が目的(仕様)で、動き/表示も同じにしなければ
ならないので致し方ないのです(^^;
標準機能で逃げようと考えておりましたが、DDKの中身を解析しVC++化してみ
ようと思います。
ありがとうございました。
> 現在、同一の事をドライバーウェアで開発し実装してますが、
> 簡便化するためにVC++化が目的(仕様)で、動き/表示も同じにしなければ
> ならないので致し方ないのです(^^;
かなり難しく、無理だと思いますが。
アプリケーションで作成するのが無理なので「ドライバーウェア」
を作ったのだと思います。
「簡便化するためにVC++化が目的」でなく、「ドライバーウェア⇔VC++間のI/Fを
密にして、システム上での簡便化を考える」にしたほうがいいと思います。
「DeviceIoControl」や「ReadFile/WriteFile」等、方法はあると思います。
「ドライバーウェア」の開発側と話し合い検討してみたらどうでしょうか。