八月の日記/メモ

 

2002.08.11(日) 01:47:42
ここのところ実に何も書いていなかったのは、あれもやろう、これもやろうとやりたいことが山積してしつつも、結局どれも片づかないという状態で、デッドロックしていたからだと思う。
そのうち一つが前進したので、日記生産量は回復の方向へ向かうのではないかと、予想される。

2002.08.11(日) 01:58:15
懸案の一つ、WindowsXP 及び Windows2000 + DirectX8.1 で動かなくなっていた IF-SEGA のドライバを再び動くようにするための手がかりが見つかった。見つかったというより、予想していた通りの原因だったことを確認したという方が正しい。
原因としては、

等と想像していたのだが、結局最初に思いついたのが答えだったわけだ。 もちろん、前から何度も試そうとしたのだが、面倒さが先行してテスト用のコードを書いて確認するまでに至らなかった。分かって見れば早くやっとけば良かったという所なのだが。
で、現状は、レポートディスクリプタをDDKのサンプルの hidgame.sys と同等にし、読みとり時にはパッドからのデータを捨てて固定値を返すようにしたドライバを作り、コントロールパネルが正しく開き、Plug&Play も正しく動作することを確認したところまで。

2002.08.29(木) 02:18:21
WindownsXP Debug/Check 版で、IEEE1394 経由でカーネルデバッガが動くことを確認。 Debuggging Tools for Windows というのが出ていて、DDK に付属のものより新しい kd.exe と windbg.exe が入っている。
IEEE1394 経由でデバッグするには、ホスト,ターゲットともに WindowsXP(または.Net)である必要がある。ターゲット側では、boot.ini で /debugport=1394 /channel=1 を指定する。ホスト側では、windbg を起動して File -> Kernel Debugger -> 1394 で channel 1 を指定して、OK する。
1394コントローラを追加して初めて windbg を使う時には必ずエラーが出る。メッセージが化けていてはっきりしないのだが、この時デバガ用の仮想デバイスが 1394コントローラから Expose されるように設定されるので、1394コントローラが正しくインストールされていれば、2回目にはうまく動くという仕組みらしい。
kd の場合は、kd -k 1394:channel=1 とコマンドラインで指定するか(これはwindbgにも有効)、
set _NT_DEBUG_BUS=1394
set _NT_DEBUG_1394_CHANNEL=1
の様に環境変数を設定する。
エラーなく起動した場合 windbg/kd は、接続待ち状態になるのだが、接続するには手動で Break を送ってやらなければならす面倒。おまけにタイミングによって効かない場合もある模様。(-b オプションが自動的に break を送るように見えるが期待される動作をしてくれない。)
結局のところあまり快適になった気がしない。

七月の日記/メモ