ExitProcess()でプロセスが終了しない場合

解決


たけし  2004-08-07 02:03:51  No: 84981  IP: [192.*.*.*]

何方か、同じような事象が発生して回避できた方がみえましたら教えてください。
C++で作成したプログラムより、VBで作成されたプログラムをCreateProcess()で起動し、VB側の処理が完了したときにC++側に結果を返す方法として、Call ExitProcess(終了コード)
を終了時に実行しています。
C++側ではWaitForSingleObject(HANDLE, 1000)で待機しているのですが、VB側でExitProcessを実行しても、なぜかVB側のプログラムが終了しない場合があります。(毎回発生するわけではありません)
そのため、C++側ではWaitForSingleObject()で待機していますがシグナル状態にならないため、終了判定が出来ません。
何方か、回避方法をご存知でしたらご教授を宜しくお願い致します。

編集    削除
だい  URL  2004-08-07 02:17:53  No: 84982  IP: [192.*.*.*]

PRB: Call to ExitProcess() from Visual Basic Application Hinders Process Exit
http://support.microsoft.com/default.aspx?scid=kb;EN-US;288216

>If a Visual Basic application makes a direct call to the ExitProcess() API, the process may not properly exit. In some instances, a call to ExitProcess() will even cause an access violation or cause the process to deadlock.
曰く、
access violationやデッドロックしてプロセスが終わらないことがあります。

>Calling ExitProcess() from a Visual Basic application is unsupported.

VBからExitProcess()を呼び出すことはサポートされていません。
ですので、
なにか別の手段(戻り値をレジストリ渡し等)で実現する必要があると思われます。

編集    削除
たけし  2004-08-07 02:26:11  No: 84983  IP: [192.*.*.*]

だいさん>
ありがとうございました。
Cのプログラムのように、APが戻り値を返すようなことは
VBでは無理ってことですね。
別の方法を考えます。

編集    削除