regne****@lists*****
regne****@lists*****
2003年 11月 13日 (木) 05:24:49 JST
どうも.皆さんお世話になっております. 掲示板にも書きましたが表題の件について相談させて下さい. UI側で,コネクションハンドルとプロファイルを対応付けできないという懸案事 項を解決するためにAPI仕様への若干の変更を加えたいと思っています. まず,SimpleUIにおける接続開始手順について説明させて下さい. 他のUIの内部はよく知りませんが,概ね同じような感じになっているのではない かと思います. 1) UI:Protocol/*/Connection/Connectを呼び出す. wParam:TLoginInfo型構造体へのポインタ 2) プロトコル:System/Connection/Createを呼び出す. wParam:プロトコル名(char*) lParam:キャプション名(char*) 3) システム:コネクションハンドルを生成し,プロトコル名とキャプション名 を設定 5) システム:System/Connection/OnConnectイベントを発行 wParam:コネクションハンドル lParam:0 6) UI:System/Connection/OnConnectイベントを取得 wParam:System/Connection/OnConnectイベントの第1引数(wParam) lParam:System/Connection/OnConnectイベントの第2引数(lParam) さて,現在 SimpleUI で問題になっているのは,1) の呼び出し,更に言うと,1) の呼び出しで利用されたプロファイルと,6) で戻ってきたコネクションハンド ルを対応させる手段が提供されていないことです. プロトコルモジュールはマルチスレッド下で実行されるため,1) で呼び出した 結果として 6) が実行されているということが保証できません. 例えば,2つの接続要求A,Bが同時に発生したとしましょう. A1),B1) という順番で呼び出しても,プロトコル側の処理によっては,B6),A6) という順番でイベントを取得する可能性があります. 今のところ以下のような感じで解決しようかと思っています. 1) TLoginInfo構造体のメンバに int nData を追加 2) System/Connection/Create の引数を以下のように変更 wParam:プロトコル名(char*) lParam:TLoginInfo構造体の nData メンバ 5) System/Connection/OnConnectイベントの引数を以下のように変更 wParam:コネクションハンドル lParam:System/Connection/Createの第2引数(lParam) UIは1)を呼び出す際にTLoginInfo構造体のnDataメンバに固有の値を設定してお きます.これを,6) で取得されるlParamと比較することで,対応する 1) の呼 び出しを調べることができます. なお,この方法ではプロトコルプラグインの対応が必要です. このため,UIは,新しい接続APIに対応しないプラグインに対応するため, 2)でlParamの値が正しく設定されていない,すなわち,6) で取得する第2引数 (lParam)が正しい値を示していない可能性について考慮しておく必要があります. UI側の対応に問題がなければ,これまでのプラグインについても修正なしに動く はずです. いかがでしょうか.ご意見お聞かせ下さい. -Rao- __________________________________________________ Do You Yahoo!? Yahoo! BB is Broadband by Yahoo! http://bb.yahoo.co.jp/