投稿者 hajime  (社会人) 投稿日時 2011/9/5 22:33:23
VB2005を使用しています。

SATAを介してドライブと通信を行っているのですが、
動作させているソフトを立ち上げた状態で、ドライブの電源をOFFし、再度ONすると、
通信が出来なくなります。
この状態で、ソフトを再度立ち上げ直すと通信が出来るようになります。
マイコンピュータ上でもドライブの電源OFF・ON後、認識していることを確認しています。

構成ですが、
VC++で通信用のDLLを作成しています。
VBからは、そのDLLをDeclareで使用しています。
DLLの中には、通信用のSCSIドライバ(客先から入手)があり、
こちらで作成したのは、SCSIドライバの関数を呼び出しているだけです。

客先のアプリケーションは(C?)、ドライブ電源をOFF・ONしてもそのまま使うことが出来るのですが、
こちらで作成した(VB)ソフトでは通信が出来なくなります。

客先からも現在聞くことも出来ない状況で、原因も分からない状態です。
そこで、DLLをリロードのようなことをすればうまくいくのではと思い、色々調べたのですが、
解が見つかりません。

他に原因として推測したのは、ドライブ電源をOFFすると、一度確立したドライブとの通信が切れて、
再度電源をONしたときには、別の通信経路(ID?など変化)してしまっているのではと推測しています。(不明)
また、VC++でのDLL作成方法が悪いのか、VBでの呼び出し方が悪いのか、迷走しています。

DLLのリロードの方法がいいのか悪いのかも分からず、
他の方法などもありましたら、どなたかご教示いただけないでしょうか。

よろしくお願いいたします。