(toppers-users 296) Re: Q:Win シミュレーションの割込機能
Takayuki WAKABAYASHI
takayuki @ ertl.ics.tut.ac.jp
2001年 10月 17日 (水) 20:23:53 JST
豊橋技術科学大学の若林です.
青木 一磨 さんは書きました:
> Visual Basicプログラムより、
> デバイスコントロール「TOPPERS/JSP on Windows Device Component」
> で提供されるメソッド RaiseInterrupt を実行したところ、
> Toppers KernelからロードされるRPCRT4.DLLで、Access Violation
> が発生した。
ご指摘の点、こちらでも確認しました。
# Windows 2000 Professional SP1, SP2
次のようなことが内部で起っています.
1. デバイス側から割込み要求が発行される
2. デバイスマネージャの割込み要求ルーチンが起動される
3. デバイスマネージャからカーネルへ割込み要求が発行される
#ret = p_IKernelEvents->OnInterruptRequest(inhno)の部分
<<ここからおかしい>>
4. カーネルのデバイス処理スレッドに読み出し要求(メッセージ)が発行される
5. カーネルは要求されたメモリの番地を読み出しに行く
<<多分ここでAccessViolationが起っている>>
<<私の環境では "偶然" 読める領域だった >>
6. カーネルのデバイス処理スレッドはメッセージ待ちに入る
7. RPCのタイムアウト時間を迎え、デバイスマネージャがリタイアする
8. デバイスがリタイアする
本来であれば3.の次にIKernelEvents::OnInterruptRequestという
関数が呼ばれるはずなのですが、なぜかWM_USERメッセージが
送られてきています。ためしにDEV_READをWM_APP+10にずらして
みたのですが、やはりWM_USERが送られてきています。
以前は確かに動いていたのですが...
#最近セキュリティアップデートを当てた以外に思い当たる節がない
青木さん ありがとうございます。
原因がわかったところで、早速デバッグ作業に入ります。
以上、まずはご報告まで。
+----------------------------------------------+
| Takayuki WAKABAYASHI (わかばやし たかゆき) |
| mailto: takayuki @ ertl.ics.tut.ac.jp |
+----------------------------------------------+
| 豊橋技術科学大学 工学研究科 電子情報工学専攻 |
| 組込みリアルタイムシステム研究室 |
+----------------------------------------------+