カーネル ライブ ダンプ コード リファレンス

このセクションでは、発生する可能性がある一般的なカーネル ライブ ダンプ コードについて説明します。 ライブ ダンプでは OS はリセットされませんが、通常とは異なる状況でオペレーティング システムを続行できる場合のメモリ情報をキャプチャできます。

Note

このトピックはプログラマー向けです。 カスタマーのシステムでブルー スクリーンとバグ チェック コードが表示された場合は、「ブルー スクリーン エラーのトラブルシューティング」を参照してください。

カーネル ライブ ダンプとバグ チェックの比較

従来のバグ チェックでは、PC がリセットされ、ユーザーの作業が中断されます。 カーネル ライブ ダンプの目標は、データを収集して通常とは異なる状況のトラブルシューティングを行うことですが、OS の操作は続行することができます。 これにより、バグ チェックと比較すると "致命的ではない" 場合はダウンタイムが短縮されますが、影響が大きい場合は失敗して停止します。 カーネル ライブ ダンプは、OS を既知の正常な状態に回復できる場合に使用されます。 たとえば、サブシステムのハードウェア リセット (ビデオやディスプレイ、USB3、Wi-Fi など) を使用すると、ユーザーへの影響を最小限に抑えて、システムを正常な状態に戻すことができます。

カーネル ライブ ダンプは、カーネル メモリの一貫したスナップショットを作成し、将来の分析のためにダンプ ファイルに保存します。 パフォーマンスへの影響を最小限に抑えるために、メモリ コピー手法を使用して、短時間でダンプ ファイルを作成します。 また、ライブ ダンプのコレクションが調整されるため、ユーザーへの影響が最小限に抑えられます。

カーネル ライブ ダンプは、何らかの処理に長時間かかっているものの、技術的な障害は発生していない問題のカテゴリに対して有効です。 ウォッチドッグ タイマーは、操作の開始時に初期化できます。 想定時間内に操作が完了する前にウォッチドッグの有効期限が切れる場合、システムのライブ ダンプを実行することができます。 その後、その操作の呼び出し履歴と関連する待機チェーンを走査してダンプを分析し、想定時間時間内に完了しない原因を調査することができます。

システム ログは、何らかのエラーが発生し、コード所有者がエラーの原因を記録して、原因を特定できるときに適切に動作します。 ウォッチドッグ タイマーを使用するライブ ダンプでは、予想されず記録されなかったエラーのパスをキャッチしようとします。 ただし、すべてのエラーと同様に、システム ログによって、エラーの特定の根本原因に関する手掛かりを示す可能性がある他の問題が特定されることがあります。

カーネル ライブ ダンプ ファイル コンテンツ

通常のダンプ ファイルと同様に、ライブ ダンプ ファイルには、(セカンダリ データを含む) ミニダンプと、アクティブ ダンプに似ているユーザー モード メモリも含む可能性のある完全なカーネル ダンプが含まれることがあります。 ダンプ ファイル コンテンツに関する一般的な情報については、「さまざまなカーネルモード ダンプ ファイル」をご覧ください。 特定のハードウェア関連データをキャプチャするように設計されているため、ミニダンプのキャプチャのみを試みるライブ ダンプもあれば、より大きなカーネル ライブ ダンプのキャプチャを試みるライブ ダンプもあります。

パフォーマンス、ファイル サイズ、ダンプ キャプチャの信頼性のために、スタンドバイ一覧およびファイル キャッシュのページなど、一部の情報は含まれていません。

通常、ライブ ダンプ ファイルには、次のようなメモリ ページが含まれます。

  • KdDebuggerBlock
  • 読み込まれたモジュール一覧

各プロセッサについて、カーネル ダンプでは次の情報がキャプチャされます。

  • KiProcessorBlock
  • PRCB
  • 現在のスタック
  • 現在のページのディレクトリ テーブル
  • KI_USER_SHARED_DATA
  • NTOS カーネル イメージ
  • HAL イメージ

カーネル ダンプの追加情報には、次のものが含まれます。

  • スレッドまたはメモリの状態
  • メモリ内のログ

一部のライブ ダンプには、ユーザーモードのプロセス ページが含まれている場合があります。

USB 障害の USB 固有データなど、追加のドメイン固有データが、一部のライブ ダンプに含まれている場合もあります。

部分的なカーネル ライブ ダンプ ファイル

部分的なカーネル ライブ ダンプ ファイルは、ライブ ダンプがすべての対象のメモリ ページを確実にキャプチャできない状況において生成される可能性があります。 部分的なダンプでキャプチャされた情報は、有効なダンプの生成に必要な重要なデータを含むページを他のページより前にキャプチャすることにより、フィルター処理されて優先順位が設定されます。 たとえば、ライブ ダンプにユーザー ページが含まれている場合、カーネル ページはユーザー ページよりも高い優先順位が設定されます。 状況によっては、すべての対象のオプションのメモリ ページをキャプチャするために使用できるリソースが不足しているため、ダンプ ファイルにメモリがない可能性があります。 ダンプ ファイルは引き続き WinDbg デバッガーによって認識される必要がありますが、メモリをダンプしようとするとエラーが表示されることがあります。 1 つのアドレスでメモリをダンプしようとするとデバッガーにエラーが表示される場合は、!pte 拡張機能を使ってアドレスの PTE が有効かどうかを確認できます。 これは、メモリ アドレスが本当に無効であるかどうか、またはページは有効であるものの、単にダンプ ファイルで使用できないだけかどうかを判断するのに役立ちます。

ライブ ダンプ ファイルを分析する

ライブ ダンプが発生すると、他のメモリ ダンプ ファイルに使用されているのと同じ手法を使ってダンプ ファイルを分析することができます。 エラー発生時のメモリのコンテンツを理解するには、プロセッサのメモリ レジスタとアセンブリのプログラミングに関する知識が必要になります。

詳細については、以下を参照してください:

WinDbg を使用してライブ ダンプ停止コード情報を表示する

特定のライブ ダンプ コードがこのトピックに含まれていない場合は、Windows Debugger (WinDbg) の !analyze 拡張機能を (カーネル モードで) お使いください。次の構文に従い、<code> をライブ ダンプ コードで置き換えます。

!analyze -show <code>

このコマンドを入力すると、指定したライブ ダンプ コードに関する情報が WinDbg によって表示されます。 既定の基数が 16 ではない場合、<code> の前に 0x を付けます。

ライブ ダンプ コードのパラメーターを !analyze コマンドに指定し、利用可能なパラメーターの情報を表示します。 たとえば、バグ チェック 0x144 BUGCODE_USB3_DRIVER に関する情報を表示するには、次に示されているように、パラメーター 1 の値に 0x3003 を指定して !analyze -show 0x144 0x3003 を使います。

0: kd> !analyze -show 0x144 0x3003
BUGCODE_USB3_DRIVER (144)
This bugcheck usually happens when the USB3 core stack detects an invalid
operation being performed by a USB client. This bugcheck may also occur
due to hardware failure on a USB Boot Device.
Arguments:
Arg1: 0000000000003003, USB3_WER_BUGCODE_USBHUB3_DEVICE_ENUMERATION_FAILURE
	A USB device failed enumeration.
Arg2: 0000000000000000, USBHUB3_LIVEDUMP_CONTEXT
Arg3: 0000000000000000, 0
Arg4: 0000000000000000, 0

WinDbg をダウンロードするには、Windows 向けデバッグ ツールを参照してください。 WinDbg 開発ツールの詳細情報については、「Windows のデバッグの概要」を参照してください。

ライブ ダンプ ファイルの場所

既定では、ライブ ダンプは 'C:\WINDOWS\LiveKernelReports' ディレクトリに格納されます。

完全なダンプ: %systemroot%\LiveKernelReports\*.dmp

ミニダンプ: %systemroot%\LiveKernelReports\<ComponentName>\*.dmp

ディレクトリ構造は、さまざまなコンポーネントのライブ ダンプを格納するために使用されます。

NDIS
PDCRevocation
PoW32kWatchdog
USBHUB3
WATCHDOG

ライブ ダンプ レジストリ キー

システム生成のライブ カーネル レポートの構成オプションについて詳しくは、「WER 設定」をご覧ください。

PowerShell を使用してライブ ダンプを手動でトリガーする

  1. 管理者の PowerShell プロンプトを開きます。

  2. StorageSubsystem のフレンドリ名を取得するには、Get-StorageSubSystem PowerShell コマンドを使用します。

 C:\> Get-StorageSubSystem
 FriendlyName                     HealthStatus OperationalStatus
 ------------                     ------------ -----------------
 Windows Storage on 10-2411-PC    Healthy      OK
  1. Get-StorageDiagnosticInfo を使用して、上記のサブシステム (およびその他の診断ログ) のライブ ダンプを生成します。 詳細については、「Get-StorageDiagnosticInfo」をご覧ください。
 C:\> Get-StorageDiagnosticInfo -StorageSubSystemFriendlyName "Windows Storage on 10-2411-PC" -IncludeLiveDump -DestinationPath C:\destinationfolder
  1. 出力では、要求された情報が生成されていることが示されています。
Gathering storage subsystem diagnostic information                                                                         
Running                                                                                                                 
[oooooooooooo                                                                                              ] 
  1. ダンプは [DestinationPath]\localhost 内にあります。
 C:\> dir C:\destinationfolder\localhost\*.dmp
   Directory: C:\destinationfolder\localhost
 Mode                LastWriteTime         Length Name
 ----                -------------         ------ ----
 -a----         5/5/2016   1:08 PM      867135488 LiveDump.dmp
  1. デバッガーを使用してダンプ ファイルで !analyze を実行すると、これが LIVE_SYSTEM_DUMP (161) のライブ ダンプ コードであることが示されます。

カーネル ライブ ダンプ コード

次の表に、カーネル ライブ ダンプ コードへのリンクが示されています。

コード 名前
0x000000AB SESSION_HAS_VALID_POOL_ON_EXIT
0x00000117 VIDEO_TDR_TIMEOUT_DETECTED
0x00000141 VIDEO_ENGINE_TIMEOUT_DETECTED
0x00000142 VIDEO_TDR_APPLICATION_BLOCKED
0x00000156 WINSOCK_DETECTED_HUNG_CLOSESOCKET_LIVEDUMP
0x0000015C PDC_WATCHDOG_TIMEOUT_LIVEDUMP
0x0000015D SOC_SUBSYSTEM_FAILURE_LIVEDUMP
0x0000015E BUGCODE_NDIS_DRIVER_LIVE_DUMP
0x0000015F CONNECTED_STANDBY_WATCHDOG_TIMEOUT_LIVEDUMP
0x00000161 LIVE_SYSTEM_DUMP
0x00000165 CLUSTER_CSV_STATUS_IO_TIMEOUT_LIVEDUMP
0x00000166 CLUSTER_RESOURCE_CALL_TIMEOUT_LIVEDUMP
0x00000167 CLUSTER_CSV_SNAPSHOT_DEVICE_INFO_TIMEOUT_LIVEDUMP
0x00000168 CLUSTER_CSV_STATE_TRANSITION_TIMEOUT_LIVEDUMP
0x00000169 CLUSTER_CSV_VOLUME_ARRIVAL_LIVEDUMP
0x0000016A CLUSTER_CSV_VOLUME_REMOVAL_LIVEDUMP
0x0000016B CLUSTER_CSV_CLUSTER_WATCHDOG_LIVEDUMP
0x0000016F CLUSTER_CSV_STATE_TRANSITION_INTERVAL_TIMEOUT_LIVEDUMP
0x00000175 PREVIOUS_FATAL_ABNORMAL_RESET_ERROR
0x00000179 CLUSTER_CLUSPORT_STATUS_IO_TIMEOUT_LIVEDUMP
0x0000017C PDC_LOCK_WATCHDOG_LIVEDUMP
0x0000017D PDC_UNEXPECTED_REVOCATION_LIVEDUMP
0x00000187 VIDEO_DWMINIT_TIMEOUT_FALLBACK_BDD
0x00000188 CLUSTER_CSVFS_LIVEDUMP
0x00000190 WIN32K_CRITICAL_FAILURE_LIVEDUMP
0x00000193 VIDEO_DXGKRNL_LIVEDUMP
0x00000195 SMB_SERVER_LIVEDUMP
0x00000198 UFX_LIVEDUMP
0x0000019D CLUSTER_SVHDX_LIVEDUMP
0x000001A1 WIN32K_CALLOUT_WATCHDOG_LIVEDUMP
0x000001A3 CALL_HAS_NOT_RETURNED_WATCHDOG_TIMEOUT_LIVEDUMP
0x000001A4 DRIPS_SW_HW_DIVERGENCE_LIVEDUMP
0x000001A5 USB_DRIPS_BLOCKER_SURPRISE_REMOVAL_LIVEDUMP
0x000001A6 BLUETOOTH_ERROR_RECOVERY_LIVEDUMP
0x000001A7 SMB_REDIRECTOR_LIVEDUMP
0x000001A8 VIDEO_DXGKRNL_BLACK_SCREEN_LIVEDUMP
0x000001A9 DIRECTED_FX_TRANSITION_LIVEDUMP
0x000001B0 VIDEO_MINIPORT_FAILED_LIVEDUMP
0x000001B8 VIDEO_MINIPORT_BLACK_SCREEN_LIVEDUMP
0x000001C4 DRIVER_VERIFIER_DETECTED_VIOLATION_LIVEDUMP
0x000001C5 IO_THREADPOOL_DEADLOCK_LIVEDUMP
0x000001C9 USER_MODE_HEALTH_MONITOR_LIVEDUMP
0x000001CC EXRESOURCE_TIMEOUT_LIVEDUMP
0x000001D1 TELEMETRY_ASSERTS_LIVEDUMP
0x000001D4 UCMUCSI_LIVEDUMP
0x000001E1 DEVICE_DIAGNOSTIC_LOG_LIVEDUMP
0x000001F5 APPLICATION_HANG_KERNEL_LIVEDUMP
0x000021C8 MANUALLY_INITIATED_BLACKSCREEN_HOTKEY_LIVE_DUMP

これらの停止コードは、ライブ ダンプに対して使用したり、デバイスのバグ チェックを行うために使用したりできます。

コード 名前
0x00000124 WHEA_UNCORRECTABLE_ERROR
0x00000144 BUGCODE_USB3_DRIVER
0x00000164 WIN32K_CRITICAL_FAILURE

関連項目

バグ チェック コード リファレンス

!analyze

ブルー スクリーンの一般的なヒント

ブルー スクリーンのデータ