lineMakeCall(TAPI)実行時のコールバック – プログラミング – Home

通知
すべてクリア

lineMakeCall(TAPI)実行時のコールバック


K.T
 K.T
(@K.T)
ゲスト
結合: 22年前
投稿: 7
Topic starter  

現在TAPIを使用したプログラムを作成中ですが、その際に問題になっていること
がありまして、発言させてもらいます。

環境 Windows XP VC++6.0 SP5.0

MSDNライブラリ等を参考にしTAPIをしようしたプログラムを作成しております。
その際に、lineOpenした後にlineMakeCall関数を呼び、その返値が返ったのを
確認しコールバック関数によってLINE_REPLYメッセージを待っているのですが
、この時にLINEERR_RESOURCEUNAVAILが返されてしまいます。
しかし、lineMakeCall関数でブレークポイントを置き若干間を与えると、その様な
ことがなくなります。
このような現象が起こるのは何故だか検討がつきませんので、どなたかご教授
していただけないでしょうか?
宜しくお願いします。


引用解決済
トピックタグ
ボコノン教徒
 ボコノン教徒
(@ボコノン教徒)
ゲスト
結合: 23年前
投稿: 90
 

#TAPIなんて全然使ったことないのだが

スレッドがいっぱい走ってるアプリをデバッグすると、よく
そのような不可解な現象が起きます。スレッドが実行・終了
するタイミング(順番)がずれるらしいです。
K.Tさんの場合、lineOpen関数の後にlineMakeCall関数をCallする
タイミングが早すぎたので最初のエラーが出たのでしょう。
で、lineMakeCall内にブレークポイントをかけると、lineOpen関数によって
起動された何らかのスレッドが終了したタイミング(この時はデバイスの
オープンが成功している)でlineMakeCall内のブレークが発動されるの
ではないでしょうか。


返信引用
K.T
 K.T
(@K.T)
ゲスト
結合: 22年前
投稿: 7
Topic starter  

ボコノン教徒さん、レスありがとうございます。
私もそのように感じ、Sleep文やら、空のループやらを回して
対処できるかと思ったのですが駄目でした。
なんだか、TAPIっていろいろと難しいです。
他に解決策ありましたら教えてください。


返信引用
Wanderer
 Wanderer
(@Wanderer)
ゲスト
結合: 23年前
投稿: 35
 

私もTAPIは使ったことがありませんが、スレッド間で同期をとり
たいのであれば、クリティカルセクションやイベントを利用すれ
ばよいと思います。


返信引用
K.T
 K.T
(@K.T)
ゲスト
結合: 22年前
投稿: 7
Topic starter  

以下のような感じで同期をとっているのですが・・・。
WaitForReplyではコールバック関数のLINE_REPLY待ちの処理を行ない
そのLINE_REPLYの詳しい内容が返値として返されます。
この返値にLINEERR_RESOURCEUNAVAILが返され困っています。

do
{
nReturn = WaitForReply( ::lineMakeCall( m_hLine,
_hCall,
lpszAddress,
0,
lpCallParams
),NULL);

if( nReturn == WAITERR_WAITABORTED )
{
TRACE( While Dialing, WaitForReply aborted.\n );
goto errExit;
}
if( HandleLineErr( nReturn ))
{
continue;
}
else
{
TRACE( lineMakeCall unhandled error\n );
goto errExit;
}
} while( nReturn != SUCCESS );

あまり、参考文献もないし・・・・。
どなたか、教えてください。


返信引用
K.T
 K.T
(@K.T)
ゲスト
結合: 22年前
投稿: 7
Topic starter  

度々もうしわけありません。

内蔵モデムやカードモデムなどには、それぞれCOM番号が割り振られて
いますが、そのCOM番号を使用しCOMポートハンドルを取得し、そし
て実際にATコマンドをWriteFileでモデムに対して送ることで
電話をかけたり、その後データ通信を行ったりしようとした場合のことで
すが、内蔵モデムやカードモデムなどのCOM番号を知ったからといって
COMポートハンドルが取得できない場合などはありますか?

実際に、どのアプリでもモデムは使用していないのにCreateFile
でモデムに割り振られたCOMポートハンドルが取得できない場合がある
のですが・・・・。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました