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

解決


RB  2010-04-26 18:46:02  No: 38343  IP: 192.*.*.*

お世話になります。

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

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

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

言語: Delphi6 Ent
OS: XP pro

編集 削除
ささ  2010-04-26 20:24:46  No: 38344  IP: 192.*.*.*

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

編集 削除
しの  2010-04-27 00:26:07  No: 38345  IP: 192.*.*.*

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

編集 削除
RB  2010-04-27 12:02:48  No: 38346  IP: 192.*.*.*

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

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

編集 削除
ささ  2010-04-27 19:21:30  No: 38347  IP: 192.*.*.*

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

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

編集 削除
ささ  2010-04-27 19:21:50  No: 38348  IP: 192.*.*.*

失礼。
解決でしたね

編集 削除
RB  2010-04-27 20:16:07  No: 38349  IP: 192.*.*.*

ささ様

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

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

編集 削除