Windows CE と Windows Mobile で、さまざまなデバイス タイプでモバイル データを取得するためのかなり複雑なソフトウェアを実行しています。Windows CE 6.0 がインストールされている唯一のデバイス タイプでは、クライアントはオペレーティング システムをランダムにフリーズします (そのため、ウォーム ブートが必要です)。クライアントは、フリーズする前に 1 ~ 2 日間は正常に動作する可能性がありますが、5 分かかる場合もあります (ハンドルとメモリ リークについては既にチェック済みです)。デバイス メーカーのログ ファイルには、デバイスがフリーズしたときに次のようなエントリが表示されます。
例外 'データの中止' (4): スレッド ID = 070a003e (pth = 89ca07e0)、Proc ID = 0709003e (pprc = 8a01d3d0) 'OurClient.exe'、VM アクティブ = 0709003e (pprc = 8a01d3d0) 'OurClient.exe ' PC=41a66b28(mscoree3_5.dll+0x00056b28) RA=41a64ab4(mscoree3_5.dll+0x00054ab4) SP=0003e28c, BVA=00000132
メッセージは時々異なります (kernel.dll、k.core.dll、nk.exe を除いて、これまでに 20 の異なるメッセージを数えたと思います)。
私の質問は基本的に、.NET フレームワークとカーネルの奥深くで発生するこのようなエラーをどのようにデバッグできますか? たとえば、プログラム カウンターを mscorlib 内のメソッドに変換するにはどうすればよいでしょうか (リターン アドレスも同じです)。私たちのプログラムは CE 6 でうまく動作しない可能性がありますか、それともドライバーの問題でしょうか?
更新:デバイス ドライバーの 1 つがキーボード フックの実装に干渉していることが判明しました。