USBで安全な取り外しができないことについて

解決


RB  2010-04-27 03:46:02  No: 38343

お世話になります。

Serviceアプリケーションの中でAPIのCopyFileを実行しているのですが、
USBが安全な取り外しができない状態になります。
Serviceを停止すると安全な取り外しができます。

CopyFileによりUSBが使用中の状態になっていると推測されますが、
Service内で何らかその状態を解放する方法はありますでしょうか?

どなたかご回答宜しくお願い致します。

言語: Delphi6 Ent
OS: XP pro


ささ  2010-04-27 05:24:46  No: 38344

よくわからないんだけど、CopyFileで内蔵HDD→内蔵HDD間のコピー中、
USBデバイスを使用していないにもかかわらず取り外しができなくなるということ?


しの  2010-04-27 09:26:07  No: 38345

カレントディレクトリがUSBになっているとかではないですか?
CopyFileだけではカレントディレクトリが変わることはないですが、念のため。


RB  2010-04-27 21:02:48  No: 38346

ささ 様
WindowsServiceの中で、Oracleの定期バックアップをしていて、バックアップファイルがある内臓HDDからUSBにデータ退避を行うというものです。

しの 様
カレントディレクトリで確認しましたが、確かにCopyFileが原因ではありませんでした・・。よく調べたら、FindFirst,FindNextを使っている箇所で、最後FindCloseをしておりませんでした。それが原因でした。
大変申し訳有りません。しかし、原因を突き止めることができて、助かりました。ありがとうございました。


ささ  2010-04-28 04:21:30  No: 38347

USBメディアにコピーをするServiceなんだよね?
Serviceの性質上常に実行されてる状態だから、
Service起動中にUSBが保持されるのは当然じゃないかと思うんだけど。

もしやるなら、USBの取り外しはServiceを終了することにして、
USBメディアが存在するかどうかの検出に別のServiceを使えば?


ささ  2010-04-28 04:21:50  No: 38348

失礼。
解決でしたね


RB  2010-04-28 05:16:07  No: 38349

ささ様

解決はしましたが、
親身になってお答えいただいてうれしく思います。

ありがとうございました。
今後とも宜しくお願いします。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加