有关事件 ID 51 的信息

文章翻译 文章翻译
文章编号: 244780 - 查看本文应用于的产品
展开全部 | 关闭全部

本文内容

概要

当您向物理磁盘写入信息时,系统事件日志可能会记录以下事件消息:

事件 ID:51
类型: 警告
来源: 磁盘
描述: 传呼期间在设备 \Device\Harddisk3\DR3 上检测到一个错误。
数据:
0000: 04 00 22 00 01 00 72 00
0008: 00 00 00 00 33 00 04 80
0010: 2d 01 00 00 00 00 00 00
0018: 00 00 00 00 00 00 00 00
0020: 00 52 ea 04 15 00 00 00
0028: 01 00 00 00 04 00 00 00
0030: 03 00 00 00 2a 00 00 00
0038: 02 84 00 00 00 29 06 00
0040: 2a 60 0a 82 75 29 00 00
0048: 80 00

注意:这里介绍的设备和特定的十六进制数据均可能会发生变化。

更多信息

当您的计算机为传递到磁盘或从磁盘传递的信息进行分页时,如果发生一般错误,则它会记录一条事件 ID 51 事件消息。在分页操作中,操作系统将内存页面从内存交换到磁盘,或者将内存页面从磁盘检索到内存。这是 Microsoft Windows 内存管理功能的一部分。

但是,当计算机从存储设备加载图像、读取数据并写入到本地映射文件或任何文件(只要它是缓冲的 I/O)时,它就可能会记录此事件消息。当计算机执行未缓冲的 I/O 时,它不记录此事件消息。您可以使用事件 ID 9 或 11 事件消息的故障排除方法来解决事件 ID 51 事件消息问题。

有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
154690 如何对事件 ID 9、事件 ID 11 和事件 ID 15 错误信息进行疑难解答
259237 群集服务器中事件 ID 9、11 和 15 的疑难解答
您可以使用与任何“DISK”错误(事件 ID 7、9、11、51 等)相关的二进制数据,通过解码数据节来帮助找出问题。 有关如何解码数据节的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
182335 ScsiPortLogError 创建的事件日志数据的格式
由于事件 ID 51 有一个附加的命令描述符块 (CDB) 框,因此在您查看事件 ID 51 事件消息的数据节时,必须考虑以下信息。

如何解码事件 ID 51 事件消息的数据节

在解码“摘要”部分的示例中的数据节时,您可能会发现,从扇区 0x2975820a 开始为 0x0080 个扇区执行的 LUN 3 写入操作失败,因为总线已重置,但是,将重试此请求。本文后面列出了解码此示例的具体步骤。

下表介绍了各个偏移量的含义。

Windows Server 2003 和 Windows XP

收起该表格展开该表格
偏移量长度
0x001操作类型:0x03 = Read,0x04 = Write,0x0F = IOCTL
0x011剩余的重试次数
0x022转储数据大小 0x0068
0x042字符串数 0x0001
0x062设备名偏移量
0x082未使用
0x0a2填充字节
0x0c4NTSTATUS 错误代码
0x104唯一错误值
0x144NTSTATUS 最终状态 0x00000000 = 将重试请求
0x184未使用的序列号
0x1c4IO 控制代码(不适用于此事件)
0x208坏扇区字节偏移量(如果有)
0x288发生错误时进行滴答计数
0x304未使用的端口号
0x341错误标志
0x353未使用
0x3864SCSI 请求块结构
0x7818探测数据结构

Windows 2000

收起该表格展开该表格
偏移量长度
0x001操作类型:0x03 = Read,0x04 = Write,0x0F = Ioctl
0x011剩余的重试次数
0x022转储数据大小 0x0022
0x042字符串数 0x0001
0x062设备名偏移量
0x082未使用
0x0a2填充字节
0x0c4NTSTATUS 错误代码
0x104唯一错误值
0x144NTSTATUS 最终状态 0x00000000 = 将重试请求
0x184未使用的序列号
0x1c4IO 控制代码(不适用于此事件)
0x208坏扇区字节偏移量(如果有)
0x284路径 ID
0x2c4目标 ID
0x304LUN
0x344操作类型:0x0028 = Read,0x002a = Write
0x381SCSI 状态
0x391SRB 状态
0x3a1未使用
0x3b1未使用
0x3c1附加探测代码限定符 (ASCQ)
0x3d1附加探测代码 (ASC)
0x3e1探测关键字
0x3f1未使用
0x4010命令描述符块 (CDB)

要解码的关键节

错误代码
在“摘要”部分的示例中,在第二行中列出了错误代码。此行以“0008:”开头,并包括最后的 4 个字节。
0008: 00 00 00 00 33 00 04 80
ErrorCode = 0x80040033

这是错误 51 的代码。对于所有事件 ID 51 事件消息来说,这一代码是相同的:
IO_WARNING_PAGING_FAILURE
注意:当您将事件 ID 中的十六进制数据解释为状态代码时,请记住,这些值是以 Little Endian 格式表示的。
最终状态代码
在“摘要”部分的示例中,最终状态代码在 0x14(在第三行)处列出,它以“0010:”开头,并包括最后的 4 个八进制字节。
0010: 2d 01 00 00 00 00 00 00
FinalStatus = 0x00000000

它映射到 STATUS_SUCCESS,意味着将重试请求。

注意:当您将事件 ID 中的十六进制数据解释为状态代码时,请记住,这些值是以 Little Endian 格式表示的。
目标磁盘
您可以使用以下数据帮助确定问题出在哪个磁盘上:
0028: 01 00 00 00 04 00 00 00
Path ID = 0x0000001, Target ID = 0x0000004
0030: 03 00 00 00 2a 00 00 00
LUN = 0x0000003

可使用事件 ID 描述中列出的驱动器符号链接更方便地确定卷。例如:\Device\Harddisk3\DR3。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
159865 如何区分物理磁盘设备和事件消息
注意:目标磁盘信息指的是它在操作系统中如何显示。存储虚拟化和多路径 I/O 软件可能会掩盖向操作系统提供的内容。此信息与物理映射可能并不直接对应。
SCSI 请求块 (SRB) 参数
在“摘要”部分的示例中,ScsiStatus 为 0x02(“0038”行中的第一个字节),SrbStatus 为 0x84(“0038”行中的第二个字节)。它提供了以下信息:
0038: 02 84 00 00 00 29 06 00
0x02 的 ScsiStatus
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
					
0x84 的 SrbStatus
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
					
您必须分解 SRB 状态掩码,因为它们都是子状态。它们与 SRB 状态代码组合在一起。

在先前的 0x84 示例中,0x8_ 是一个状态掩码。因此,SRB_STATUS_AUTOSENSE_VALID 和 0x04 都是 SRB 状态代码。这里指的是 SRB_STATUS_ERROR。
探测代码
如果 SRB 状态是自动探测有效,则探测代码提供附加信息。在“摘要”部分的示例中,探测代码为 0x06(“0038”行中的第 7 个字节),附加探测代码为 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         
					
0x29 的附加探测代码 (ASC)

附加探测代码位于偏移量为 003d 的“0038”行的第 6 个字节中,值为 29。对于指定的探测关键字,此值将映射到:
0x29 = SCSI_ADSENSE_BUS_RESET

附加探测代码:(来自 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                       
					
0x00 的附加探测代码限定符 (ASCQ)

附加探测代码限定符位于偏移量 003C 处的“0038”行中的第五个字节中,其值为 00。在本例中为 00,因此它不适用于指定的 ASC。每个探测代码的附加探测代码限定符列表太大,故无法附到本文中。有关其他信息,请查看 DDK 中的 SCSI.H。

注意:0x80 以上的所有 ASC 值和 ASCQ 值都是特定于供应商的,SCSI 规范或 Microsoft DDK 中没有记录这些值。有关信息,请咨询硬件供应商。
命令描述符块 (CDB) 参数
CDB 以偏移量为“0040”的行开头:
0040: 2a 60 0a 82 75 29 00 00
0048: 80 00
偏移量 0x40 处的字节表示 CDB 代码;偏移量 0x43 到 0x46 处的字节表示起始扇区;偏移量 0x47 到 0x49 表示此操作涉及的扇区数。

注意:CDB 数据节采用的不是 Little Endian 格式,因此不应翻转字节。因为此节的格式与以前的节格式不同,所以解码此节时一定要小心。

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       
					

属性

文章编号: 244780 - 最后修改: 2005年10月24日 - 修订: 14.1
这篇文章中的信息适用于:
  • Microsoft Windows Server 2003 Standard Edition
  • Microsoft Windows Server 2003 Enterprise Edition
  • Microsoft Windows Server 2003 Web Edition
  • Microsoft Windows Server 2003, Enterprise x64 Edition
  • Microsoft Windows XP Professional Edition
  • Microsoft Windows XP Home Edition
  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Professional Edition
关键字:?
kberrmsg kbinfo kbenv KB244780
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com