イベント ID 51 に関する情報

適用対象: Microsoft Windows Server 2003 Standard Edition (32-bit x86)Microsoft Windows Server 2003 Enterprise Edition (32-bit x86)Microsoft Windows Server 2003 Web Edition

概要


物理ディスクに情報を書き込むと、次のイベント メッセージがシステム ログに記録されることがあります。


: 上記のデバイスや具体的な 16 進データは環境によって異なります。

詳細


イベント ID 51 のイベント メッセージは、ディスクから、またはディスクに対して情報のページングを行うときに一般的なエラーが発生するとログに記録されます。ページング操作では、メモリのページが、メモリからディスクにスワップされるか、ディスクからメモリに取り込まれます。この動作は Microsoft Windows のメモリ管理の一部です。

しかし、イメージが記憶装置から読み込まれるときや、ローカルにマッピングされているファイルまたは (バッファー I/O である限り) 任意のファイルに対して読み書きが行われるときに、このイベント メッセージが出力されることがあります。バッファーを使用しない I/O を実行するときはこのイベント メッセージは出力されません。イベント ID 51 のイベント メッセージは、イベント ID 9 またはイベント ID 11 のイベント メッセージと同様の方法でトラブルシューティングを行うことができます。

特定の状況で、次のイベント ID 51 イベント メッセージがシステム ログに記録されることがあります。



この場合、悪影響はありません。たとえば、USB デバイスが接続された状態で CDR、CDRW、DVDR などの空のメディアが書き込み可能なドライブに挿入されると、イベント ID 51 がログに記録されます。そのイベントは、ディスクが書き込み可能であってもシステム ログに記録されますが、USB デバイスはその後も使用できます。このような特別な場合は、ログ エントリを安全に無視することができるため、追加の操作は必要ありません。

注: Windows XP および Windows Server 2003 上では、イベント ログ エントリのサイズ制限のため、DeviceName の後半は表示されないことがあります。そのため、表示されるハードディスク番号、つまりそのデバイス オブジェクト名は適切でない可能性があります。これは、データ セクションに格納される情報量が多すぎるため、"DeviceName" 用に使用できる容量が減ってしまうことが原因です。この場合、データ セクションに格納されている対象のディスクのデータを検索して、該当するデバイスをみつけることができます。詳細については、「イベント ID 51 のイベント メッセージのデータ セクションをデコードする方法」セクションを参照してください。

Windows Vista 以降の Windows オペレーティング システム上では、イベント ログ エントリのサイズが増加したため、DeviceName は最後まで表示されます。関連情報を参照するには、以下のサポート技術情報番号をクリックしてください。

154690 イベント ID 9、11、および 15 のエラー メッセージのトラブルシューティング

259237 Cluster Server のイベント ID 9、11、および 15 に対するトラブルシューティング

データ セクションをデコードすることで、"DISK" エラー (イベント ID 7、9、11、51 など) に関連付けられたバイナリ データを問題の特定に役立てることができます。  データ セクションをデコードする方法の関連情報を参照するには、以下のサポート技術情報番号をクリックしてください。

182335 ScsiPortLogError で生成したイベント ログ データの形式

イベント ID 51 には、追加の CDB (Command Descriptor Block) ボックスがあるため、イベント ID 51 のイベント メッセージのデータ セクションを確認するときには次の情報を考慮する必要があります。

イベント ID 51 のイベント メッセージのデータ セクションをデコードする方法

「概要」に記載した例のデータ セクションをデコードすると、LUN 3 のセクター 0x2975820a から始まる 0x0080 セクター部分への書き込み操作が、バスのリセットが原因で失敗しますが、要求は再試行されることがわかります。この例をデコードする具体的な手順は後で説明します。

次の表に、各オフセットの説明を記載します。

Windows Server 2003 および Windows XP

オフセット長さ
0x001操作の種類: 0x03 = 読み取り、0x04 = 書き込み、0x0F = I/O コントロール
0x011残りの再試行回数
0x022ダンプ データ サイズ 0x0068
0x042文字列の数 0x0001
0x062デバイス名へのオフセット
0x082未使用
0x0a2埋め込みバイト
0x0c4NTSTATUS エラー コード
0x104一意のエラー値
0x144NTSTATUS の最終状態 0x00000000 = 要求は再試行されます
0x184未使用のシーケンス番号
0x1c4I/O コントロール コード (このイベントには適用されません)
0x208不良セクターへのバイト オフセット (存在する場合のみ)
0x288エラー発生時のティック数
0x304未使用のポート番号
0x341エラー フラグ
0x353未使用
0x3864SCSI Request Block 構造体
0x7818センス データ構造体

Windows 2000

オフセット長さ
0x001操作の種類: 0x03 = 読み取り、0x04 = 書き込み、0x0F = I/O コントロール
0x011残りの再試行回数
0x022ダンプ データ サイズ 0x0022
0x042文字列の数 0x0001
0x062デバイス名へのオフセット
0x082未使用
0x0a2埋め込みバイト
0x0c4NTSTATUS エラー コード
0x104一意のエラー値
0x144NTSTATUS の最終状態 0x00000000 = 要求は再試行されます
0x184未使用のシーケンス番号
0x1c4I/O コントロール コード (このイベントには適用されません)
0x208不良セクターへのバイト オフセット (存在する場合のみ)
0x284パス ID
0x2c4ターゲット ID
0x304LUN
0x344操作の種類: 0x0028 = 読み取り、0x002a = 書き込み
0x381SCSI の状態
0x391SRB の状態
0x3a1未使用
0x3b1未使用
0x3c1ASCQ (Additional Sense Code Qualifier)
0x3d1ASC (Additional Sense Code)
0x3e1センス キー
0x3f1未使用
0x4010CDB (Command Descriptor Block)

デコードする主要なセクション

「概要」に記載した例では、次のエラー コードが 2 行目に記載されています。この行は "0008:" で始まり、行の最後の 4 バイトがエラー コードです。
0008: 00 00 00 00 33 00 04 80
エラー コード = 0x80040033

これはエラー 51 用のコードで、イベント ID 51 のすべてのイベント メッセージに共通です。
IO_WARNING_PAGING_FAILURE
注: イベント ID の 16 進データを状態コードに変換するときは、値がリトル エンディアン形式で表示されることに注意してください。
最終ステータス コード
「概要」に記載した例では、次の最終状態コードが 0x14 (3 行目) に記載されています。この行は "0010:" で始まり、最後の 4 バイトが最終状態コードです。
0010: 2d 01 00 00 00 00 00 00
FinalStatus = 0x00000000

これは STATUS_SUCCESS にマッピングされ、要求が再試行されることを意味します。

注: イベント ID の 16 進データを状態コードに変換するときは、値がリトル エンディアン形式で表示されることに注意してください。
対象のディスク
次のデータは、問題が発生したディスクの識別に役立ちます。
0028:01 00 00 00 04 00 00 00
パス ID = 0x0000001、ターゲット ID = 0x0000004
0030:03 00 00 00 2a 00 00 00
LUN = 0x0000003

ボリュームを識別するには、イベント ID の説明に記載されたドライブのシンボリック リンクを使用する方が簡単な場合があります。シンボリック リンクとは、\Device\Harddisk3\DR3 などです。 関連情報を参照するには、以下のサポート技術情報番号をクリックしてください。

159865 イベント メッセージから物理ディスク デバイスを識別する方法

: 対象のディスクの情報は、ディスクがオペレーティング システムにどのように認識されるかを示す情報です。記憶域の仮想化および複数のパスによる I/O を行うソフトウェアでは、オペレーティング システムに送信される情報がマスクされることがあります。そのため、この情報は物理的なマッピングとは直接対応しない場合があります。
SRB (SCSI Request Block) パラメーター
「概要」に記載した例では、次のように ScsiStatus が 0x02 (行 "0038:" の 1 バイト目)、SrbStatus が 0x84 (行 "0038:" の 2 バイト目) です。したがって、以下の情報が得られます。
0038:02 84 00 00 00 29 06 00
ScsiStatus 0x02
SCSISTAT_CHECK_CONDITION

SCSI 状態コード (SCSI.H から引用)

0x00 = SCSISTAT_GOOD
0x02 = SCSISTAT_CHECK_CONDITION
0x04 = SCSISTAT_CONDITION_MET
0x08 = SCSISTAT_BUSY
0x10 = SCSISTAT_INTERMEDIATE
0x14 = SCSISTAT_INTERMEDIATE_COND_MET
0x18 = SCSISTAT_RESERVATION_CONFLICT
0x22 = SCSISTAT_COMMAND_TERMINATED
0x28 = SCSISTAT_QUEUE_FULL
SrbStatus 0x84
SRB_STATUS_AUTOSENSE_VALID | SRB_STATUS_ERROR

0x00 = SRB_STATUS_PENDING
0x01 = SRB_STATUS_SUCCESS
0x02 = SRB_STATUS_ABORTED
0x03 = SRB_STATUS_ABORT_FAILED
0x04 = SRB_STATUS_ERROR
0x05 = SRB_STATUS_BUSY
0x06 = SRB_STATUS_INVALID_REQUEST
0x07 = SRB_STATUS_INVALID_PATH_ID
0x08 = SRB_STATUS_NO_DEVICE
0x09 = SRB_STATUS_TIMEOUT
0x0A = SRB_STATUS_SELECTION_TIMEOUT
0x0B = SRB_STATUS_COMMAND_TIMEOUT
0x0D = SRB_STATUS_MESSAGE_REJECTED
0x0E = SRB_STATUS_BUS_RESET
0x0F = SRB_STATUS_PARITY_ERROR
0x10 = SRB_STATUS_REQUEST_SENSE_FAILED
0x11 = SRB_STATUS_NO_HBA
0x12 = SRB_STATUS_DATA_OVERRUN
0x13 = SRB_STATUS_UNEXPECTED_BUS_FREE
0x14 = SRB_STATUS_PHASE_SEQUENCE_FAILURE
0x15 = SRB_STATUS_BAD_SRB_BLOCK_LENGTH
0x16 = SRB_STATUS_REQUEST_FLUSHED
0x20 = SRB_STATUS_INVALID_LUN
0x21 = SRB_STATUS_INVALID_TARGET_ID
0x22 = SRB_STATUS_BAD_FUNCTION
0x23 = SRB_STATUS_ERROR_RECOVERY
0x24 = SRB_STATUS_NOT_POWERED
0x30 = SRB_STATUS_INTERNAL_ERROR
(発生したエラーが SCSI 関連ではないことを示すためにポート ドライバーで使用されます)
0x38 - 0x3f = 内部のポート ドライバー用に予約されている SRB 状態の値です。
SRB 状態マスク:

0x80 = SRB_STATUS_AUTOSENSE_VALID
0x40 = SRB_STATUS_QUEUE_FROZEN
SrbStatus は、SRB 状態マスクと SRB 状態コードが結合したものです。SrbStatus を分解して、サブステータスである SRB 状態マスクを取り出す必要があります。

前述の 0x84 の例では、0x8_ が状態マスクです。0x80 は SRB_STATUS_AUTOSENSE_VALID、0x04 は SRB_STATUS_ERROR にそれぞれ対応します。
センス コード
SRB 状態で自動感知が有効であることが示されている場合、センス コードから詳細情報を取得できます。「概要」に記載した例では、ASC (Additional Sense Code) は次のように 0x06 (行 "0038:" の 7 バイト目) であり、ASC (Additional Sense Code) は 0x29 (行 "0038:" の 6 バイト目) です。したがって、以下の情報が得られます。
0038:02 84 00 00 00 29 06 00
センス キー 0x06

オフセット 003e のバイトはセンス キーです。次の値にマッピングされます。
0x06 = SCSI_SENSE_UNIT_ATTENTION

センス コード (SCSI.H から引用)

0x00 = SCSI_SENSE_NO_SENSE
0x01 = SCSI_SENSE_RECOVERED_ERROR
0x02 = SCSI_SENSE_NOT_READY
0x03 = SCSI_SENSE_MEDIUM_ERROR
0x04 = SCSI_SENSE_HARDWARE_ERROR
0x05 = SCSI_SENSE_ILLEGAL_REQUEST
0x06 = SCSI_SENSE_UNIT_ATTENTION
0x07 = SCSI_SENSE_DATA_PROTECT
0x08 = SCSI_SENSE_BLANK_CHECK
0x09 = SCSI_SENSE_UNIQUE
0x0A = SCSI_SENSE_COPY_ABORTED
0x0B = SCSI_SENSE_ABORTED_COMMAND
0x0C = SCSI_SENSE_EQUAL
0x0D = SCSI_SENSE_VOL_OVERFLOW
0x0E = SCSI_SENSE_MISCOMPARE
0x0F = SCSI_SENSE_RESERVED
ASC (Additional Sense Code) 0x29

ASC はオフセット 003d で行 "0038:" の 6 バイト目にあり、値は 29 です。このセンス キーは、次の値にマッピングされます。
0x29 = SCSI_ADSENSE_BUS_RESET

Additional Sense Code (SCSI.H から引用)

0x00 = SCSI_ADSENSE_NO_SENSE
0x02 = SCSI_ADSENSE_NO_SEEK_COMPLETE
0x04 = SCSI_ADSENSE_LUN_NOT_READY
0x0C = SCSI_ADSENSE_WRITE_ERROR
0x14 = SCSI_ADSENSE_TRACK_ERROR
0x15 = SCSI_ADSENSE_SEEK_ERROR
0x17 = SCSI_ADSENSE_REC_DATA_NOECC
0x18 = SCSI_ADSENSE_REC_DATA_ECC
0x20 = SCSI_ADSENSE_ILLEGAL_COMMAND
0x21 = SCSI_ADSENSE_ILLEGAL_BLOCK
0x24 = SCSI_ADSENSE_INVALID_CDB
0x25 = SCSI_ADSENSE_INVALID_LUN
0x27 = SCSI_ADSENSE_WRITE_PROTECT
0x28 = SCSI_ADSENSE_MEDIUM_CHANGED
0x29 = SCSI_ADSENSE_BUS_RESET
0x2E = SCSI_ADSENSE_INSUFFICIENT_TIME_FOR_OPERATION
0x30 = SCSI_ADSENSE_INVALID_MEDIA
0x3a = SCSI_ADSENSE_NO_MEDIA_IN_DEVICE
0x3b = SCSI_ADSENSE_POSITION_ERROR
0x5a = SCSI_ADSENSE_OPERATOR_REQUEST
0x5d = SCSI_ADSENSE_FAILURE_PREDICTION_THRESHOLD_EXCEEDED
0x64 = SCSI_ADSENSE_ILLEGAL_MODE_FOR_THIS_TRACK
0x6f = SCSI_ADSENSE_COPY_PROTECTION_FAILURE
0x73 = SCSI_ADSENSE_POWER_CALIBRATION_ERROR
0x80 = SCSI_ADSENSE_VENDOR_UNIQUE
0xA0 = SCSI_ADSENSE_MUSIC_AREA
0xA1 = SCSI_ADSENSE_DATA_AREA
0xA7 = SCSI_ADSENSE_VOLUME_OVERFLOW
ASCQ (Additional Sense Code Qualifier) 0x00

ASCQ はオフセット 003C で行 "0038" の 5 バイト目にあり、値は 00 です。この例では 00 であるため、指定された ASC には適用されません。各センス コードに対応する ASCQ を一覧にすると非常に大きなものとなるため、この資料では省略します。関連情報については、DDK の SCSI.H を参照してください。

: 0x80 を超える ASC および ASCQ のすべての値はベンダー固有であり、SCSI 仕様および Microsoft DDK には記載されていません。詳細については、ハードウェアの製造元に問い合わせてください。
CDB (Command Descriptor Block) のパラメーター
CDB はオフセット '0040' の行から始まります。
0040:2a 60 0a 82 75 29 00 00
0048: 80 00
オフセット 0x40 のバイトは CDB コードを示します。オフセット 0x43 ~ 0x46 のバイトは開始セクターを示し、オフセット 0x47 ~ 0x49 はこの操作に関係するセクターの数を示します。

: CDB データ セクションはリトル エンディアン形式ではないため、バイトの順序の反転は不要です。このセクションは先ほどのセクションとは形式が異なるため、デコードには注意が必要です。

0x2a = 書き込み要求
0x0a827529 = 開始セクター
0x0080 = セクター数

SCSI CDB コード (SCSI.H から引用)

0x00 = SCSIOP_TEST_UNIT_READY
0x01 = SCSIOP_REZERO_UNIT
0x01 = SCSIOP_REWIND
0x02 = SCSIOP_REQUEST_BLOCK_ADDR
0x03 = SCSIOP_REQUEST_SENSE
0x04 = SCSIOP_FORMAT_UNIT
0x05 = SCSIOP_READ_BLOCK_LIMITS
0x07 = SCSIOP_REASSIGN_BLOCKS
0x07 = SCSIOP_INIT_ELEMENT_STATUS
0x08 = SCSIOP_READ6
0x08 = SCSIOP_RECEIVE
0x0A = SCSIOP_WRITE6
0x0A = SCSIOP_PRINT
0x0A = SCSIOP_SEND
0x0B = SCSIOP_SEEK6
0x0B = SCSIOP_TRACK_SELECT
0x0B = SCSIOP_SLEW_PRINT
0x0C = SCSIOP_SEEK_BLOCK
0x0D = SCSIOP_PARTITION
0x0F = SCSIOP_READ_REVERSE
0x10 = SCSIOP_WRITE_FILEMARKS
0x10 = SCSIOP_FLUSH_BUFFER
0x11 = SCSIOP_SPACE
0x12 = SCSIOP_INQUIRY
0x13 = SCSIOP_VERIFY6
0x14 = SCSIOP_RECOVER_BUF_DATA
0x15 = SCSIOP_MODE_SELECT
0x16 = SCSIOP_RESERVE_UNIT
0x17 = SCSIOP_RELEASE_UNIT
0x18 = SCSIOP_COPY
0x19 = SCSIOP_ERASE
0x1A = SCSIOP_MODE_SENSE
0x1B = SCSIOP_START_STOP_UNIT
0x1B = SCSIOP_STOP_PRINT
0x1B = SCSIOP_LOAD_UNLOAD
0x1C = SCSIOP_RECEIVE_DIAGNOSTIC
0x1D = SCSIOP_SEND_DIAGNOSTIC
0x1E = SCSIOP_MEDIUM_REMOVAL
0x23 = SCSIOP_READ_FORMATTED_CAPACITY
0x25 = SCSIOP_READ_CAPACITY
0x28 = SCSIOP_READ
0x2A = SCSIOP_WRITE
0x2B = SCSIOP_SEEK
0x2B = SCSIOP_LOCATE
0x2B = SCSIOP_POSITION_TO_ELEMENT
0x2E = SCSIOP_WRITE_VERIFY
0x2F = SCSIOP_VERIFY
0x30 = SCSIOP_SEARCH_DATA_HIGH
0x31 = SCSIOP_SEARCH_DATA_EQUAL
0x32 = SCSIOP_SEARCH_DATA_LOW
0x33 = SCSIOP_SET_LIMITS
0x34 = SCSIOP_READ_POSITION
0x35 = SCSIOP_SYNCHRONIZE_CACHE
0x39 = SCSIOP_COMPARE
0x3A = SCSIOP_COPY_COMPARE
0x3B = SCSIOP_WRITE_DATA_BUFF
0x3C = SCSIOP_READ_DATA_BUFF
0x40 = SCSIOP_CHANGE_DEFINITION
0x42 = SCSIOP_READ_SUB_CHANNEL
0x43 = SCSIOP_READ_TOC
0x44 = SCSIOP_READ_HEADER
0x45 = SCSIOP_PLAY_AUDIO
0x46 = SCSIOP_GET_CONFIGURATION
0x47 = SCSIOP_PLAY_AUDIO_MSF
0x48 = SCSIOP_PLAY_TRACK_INDEX
0x49 = SCSIOP_PLAY_TRACK_RELATIVE
0x4A = SCSIOP_GET_EVENT_STATUS
0x4B = SCSIOP_PAUSE_RESUME
0x4C = SCSIOP_LOG_SELECT
0x4D = SCSIOP_LOG_SENSE
0x4E = SCSIOP_STOP_PLAY_SCAN
0x51 = SCSIOP_READ_DISK_INFORMATION
0x52 = SCSIOP_READ_TRACK_INFORMATION
0x53 = SCSIOP_RESERVE_TRACK_RZONE
0x54 = SCSIOP_SEND_OPC_INFORMATION
0x55 = SCSIOP_MODE_SELECT10
0x5A = SCSIOP_MODE_SENSE10
0x5B = SCSIOP_CLOSE_TRACK_SESSION
0x5C = SCSIOP_READ_BUFFER_CAPACITY
0x5D = SCSIOP_SEND_CUE_SHEET
0x5E = SCSIOP_PERSISTENT_RESERVE_IN
0x5F = SCSIOP_PERSISTENT_RESERVE_OUT
0xA0 = SCSIOP_REPORT_LUNS
0xA1 = SCSIOP_BLANK
0xA3 = SCSIOP_SEND_KEY
0xA4 = SCSIOP_REPORT_KEY
0xA5 = SCSIOP_MOVE_MEDIUM
0xA6 = SCSIOP_LOAD_UNLOAD_SLOT
0xA6 = SCSIOP_EXCHANGE_MEDIUM
0xA7 = SCSIOP_SET_READ_AHEAD
0xAD = SCSIOP_READ_DVD_STRUCTURE
0xB5 = SCSIOP_REQUEST_VOL_ELEMENT
0xB6 = SCSIOP_SEND_VOLUME_TAG
0xB8 = SCSIOP_READ_ELEMENT_STATUS
0xB9 = SCSIOP_READ_CD_MSF
0xBA = SCSIOP_SCAN_CD
0xBB = SCSIOP_SET_CD_SPEED
0xBC = SCSIOP_PLAY_CD
0xBD = SCSIOP_MECHANISM_STATUS
0xBE = SCSIOP_READ_CD
0xBF = SCSIOP_SEND_DVD_STRUCTURE
0xE7 = SCSIOP_INIT_ELEMENT_RANGE