エラーメッセージ 0xC000041D はどういう意味ですか?

エラーメッセージ 0xC000041D はどういう意味ですか?

iexploreでブラウズしたら、メッセージが表示されてクラッシュしました

C000041D

つまり

iexplore.exe の 0x7149B7C0 で未処理の例外が発生しました: 0xC000041D: ユーザー コールバック中に未処理の例外が発生しました。

私の知る限り、0x は 16 進コード、714 はプログラム カウンター、C00 はエラー コードを意味します。このバグを調査するにはどうすればよいでしょうか? Visual Studio を実行してプログラムをキャッチしました。

スクリーンショット
(画像をクリックすると拡大します)

答え1

0xC000041d = STATUS_FATAL_USER_CALLBACK_EXCEPTION で
あることがわかりました。アプリによって作成された早期スレッドが原因で、アプリケーションが異常コード 0xc000041d で終了するようです。
詳細とソースを確認するにはクリックしてください。

答え2

0xC000041dNTステータスMicrosoftのコード定数で定義されているntstatus.hヘッダーファイル:

定義名(MessageId)はSTATUS_FATAL_USER_CALLBACK_EXCEPTION、その説明は次のとおりです。

"An unhandled exception was encountered during a user callback."

NTステータスコードは通常、Windows システムとデバイス ドライバー間、場合によっては Windows とアプリケーション間でシステム情報を通信するときに使用されます。

の意味NTステータスコードは、Microsoft エラー検索ツールを使用して検索することもできます。

説明にあるように、Windowsはこの特定のNTステータスユーザーモード呼び出し中に例外(異常な状態)に遭遇した場合のコード(https://www.tutorialspoint.com/ユーザーモードとカーネルモード) コールバック関数 (https://en.wikipedia.org/wiki/コールバック_(コンピュータプログラミング))。

このメッセージが表示される状況は数多くあります。そのため、NTステータスコード0xC000041dでは、無関係な結果が生成される場合があります。プロセスの正確なファイル名 (この場合は iexplore.exe)、障害のあるモジュール (以下を参照)、および/または正確なメモリ アドレス (この場合は ) も含めると、より関連性の高い結果が表示される場合があります0x7149B7C0

プログラムのコンパイル/ビルド バージョンが若干異なること、実行モデルが異なること (例: Windows の 32 ビット バージョンと 64 ビット バージョン)、およびモジュール (実行中のプログラム コードを構成する .dll、.exe、.sys ファイルなど) がさまざまなベース アドレスに読み込まれることなどにより、完全なメモリ アドレスの検索は少し難しい場合があります。B7C0アドレスの最後の 4 文字のみを一致させるだけで、関連する問題を示すのに十分な場合があります。

実際に問題をデバッグするには、Visual Studio を使用して、例外の原因となっているスレッドの呼び出しスタックを表示します。

https://stackoverflow.com/questions/945193/visual-studio でスタックトレースを見つける方法

コール スタックには、例外が発生した時点で相互に呼び出していたさまざまなモジュールと、これらのモジュール内のメソッドが表示されます。モジュール名から、問題が発生したときにプログラムが何をしていたかがわかります。

シンボル(https://devblogs.microsoft.com/devops/understanding-symbol-files-and-visual-studios-symbol-settings/問題の原因となっているモジュールの詳細情報 (および場合によってはこれらのモジュールのソース コード ファイル) が利用可能であれば、デバッグが容易になります。

関連情報