• ベストアンサー

WriteFileのエラー995は何が原因?

<プログラム環境> Windows XP VC++6.0 MFC AppWizard(exe) ダイアログベース <症状> 以下のコード部分は、これまでエラーは無かったのですが、 他の部分をいろいろといじった結果以下のコードでエラーが出るように なりました。 HANDLE hCom;//COMポートのハンドル OVERLAPPED old;//構造体 unsigned char ucBuf[];//送信する内容 DWORD dwByte;//送信するバイト数 //上記変数は宣言後、正しい値を入れています。 BOOL blRet;//実行結果 if(WriteFile(hCom,ucBuf,dwByte,NULL,&old) == 0){ blRet = GetLastError(); } を実行後、blRetの結果を確認すると995で、 「スレッドが終了したか、またはアプリケーション要求によって、I/O 処理が中止されました。」 が出ました。 <質問> このエラーは何が原因でしょうか? 宜しければご指摘の程よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#75489
noname#75489
回答No.2

ソースがかなり省略されているのでなんとも言えませんが、WriteFileの第5引数がNULLで無いことから、COMポートに対して非同期通信を行おうとしていると思われます。 非同期通信を行う場合、イベント監視など省略されている部分が重要になりますので、プログラム全体を見直された方がよいと思います。

参考URL:
http://donnk.com/Nmura/soft/help007.html
meeyooyoo
質問者

お礼

itohoo様、有難うございます。 原因は分かりませんが、他のソースをいじっている内に直りました。 有難うございました。

その他の回答 (1)

  • arain
  • ベストアンサー率27% (292/1049)
回答No.1

>このエラーは何が原因でしょうか? エラーメッセージのとおりで、 ハンドルが無効になったり、他のスレッド等で使用したままとなっていたりして、使用することができない状態に発生します。 >他の部分をいろいろといじった結果 のいろいろいじった部分を再確認するほかありません。

meeyooyoo
質問者

お礼

arain様、有難うございます。 原因は分かりませんが、他のソースをいじっている内に直りました。 有難うございました。

関連するQ&A