0x2a = write request 0x0a827529 = the starting sector 0x0080 = the number of sectors scsi cdb codes: (from scsi.h) 0x00 = scsioptestunitready 0x01 = scsioprezerounit 0x01 = scsioprewind 0x02 = scsioprequestblockaddr 0x03 = scsioprequestsense 0x04 = scsiopformatunit 0x05 = scsiopreadblocklimits 0x07 = scsiopreassignblocks 0x07 = scsiopinitelementstatus 0x08 = scsiopread6. Nero 2021- Multimedia software with over 20 years of experience and 100 million users worldwide Further information. On Windows XP/2000, the cd ripping library uses the SCSI passthrough interface. For some set-ups, mostly involving burners or virtual drives, no CD players or not all CD players are found. If this is the case, get the file wnaspi32.dll provided by Ahead Software AG from here. Download this file and place it in the program folder of BestPractice.
This article describes the information about Event ID 51 that occurs when you write information to the physical disk, and how to decode the data section of an Event ID 51 event message.
Original product version: Windows 7 Service Pack 1, Windows Server 2012 R2
Original KB number: 244780
Summary
When you write information to the physical disk, the following event message may be logged in the System log:
Event ID: 51
Event Type: Warning
Event Source: Disk
Description: An error was detected on device DeviceHarddisk3DR3 during a paging operation.
Data:
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
Note
The device in the description and the specific hexadecimal data may vary.
More information
If a generic error occurs when your computer pages information to or from the disk, an Event ID 51 event message is logged. In a paging operation, the operating system either swaps a page of memory from memory to disk or retrieves a page of memory from disk to memory. It is part of the memory management of Windows.
However, the computer may log this event message when it loads images from a storage device, reads, and writes to locally mapped files or to any file (as long as it is buffered I/O). The computer does not log this event message when it performs nonbuffered I/O. You can troubleshoot an Event ID 51 event message exactly like you troubleshoot Event ID 9 or Event ID 11 event messages.
Under certain circumstances, the system logs the following Event ID 51 event message:
An error was detected on device DeviceDeviceName during a paging operation
In this case, no harmful effects are experienced. For example, Event ID 51 is logged when blank media such as CDR, CDRW, DVDR, and so on, is inserted into a writable drive while a USB device is plugged in. The system logs the event even though the disc is writable, and the USB device is still usable. In these particular cases, you can safely ignore the log entries, and no additional action is required.
Note
On Windows XP and Windows Server 2003, the DeviceName may be truncated because of the size limitation of the event log entry. As a result, the displayed hard disk number, or the device object name itself may be incorrect. This is because a large amount of information is stored in the data section, which reduces the space that is available for the DeviceName. In this case, you can find the appropriate device by looking at the destination disk data that is stored in the data section. For more information, see the Decode the data section of an Event ID 51 event message section.
On Windows Vista and later Windows operating systems, the event log entry size has been increased, and DeviceName is not truncated.
You can use the binary data that is associated with any DISK error (Event ID 7, 9, 11, 51, and other Event IDs) to help you identify the problem by decoding the data section.
Because an Event ID 51 has an additional command descriptor block (CDB) box, you must consider the following information when you are reviewing the data section of an Event ID 51 event message.
Decode the data section of an Event ID 51 event message
When you decode the data section in the example that is in the Summary section, you can see that an attempt to perform a write operation to LUN 3 starting at sector 0x2975820a for 0x0080 sectors fails because the bus was reset but the request will be retried. Later, this article lists the specific steps to decode this example.
The following tables describe what each offset represents.
Offset | Length | Values |
---|---|---|
0x00 | 1 | Type of operation: 0x03 = Read, 0x04 = Write, 0x0F = IOCTL |
0x01 | 1 | Number of retries remaining |
0x02 | 2 | Dump Data Size 0x0068 |
0x04 | 2 | Number of Strings 0x0001 |
0x06 | 2 | Offset to the device name |
0x08 | 2 | Unused |
0x0a | 2 | Padding bytes |
0x0c | 4 | NTSTATUS Error Code |
0x10 | 4 | Unique Error Value |
0x14 | 4 | NTSTATUS Final Status 0x00000000 = the request will be retried |
0x18 | 4 | Sequence Number - Unused |
0x1c | 4 | Io Control Code (does not apply to this event) |
0x20 | 8 | Byte offset to bad sector, if any |
0x28 | 8 | Tick count when the error occurred |
0x30 | 4 | Port number - Unused |
0x34 | 1 | Error Flags |
0x35 | 3 | Unused |
0x38 | 88 | SCSI request block structure |
0x90 | 18 | Sense data structure |
Key sections to decode
Here are key sections to decode.
The error code
In the example that is in the Summary section, the error code is listed in the second line. That line starts with 0008: and includes the last four bytes in the line.
0008: 00 00 00 00 33 00 04 80
ErrorCode = 0x80040033
This is the code for error 51. This code is the same for all Event ID 51 event messages:
IO_WARNING_PAGING_FAILURE
Note
When you interpret the hexadecimal data in the Event ID to the status code, remember that the values are represented in the little endian format.
The final status code
In the example in the Summary section, the final status code is listed at 0x14 (in the third line) that starts with 0010: and includes the last four octets in this line.
0010: 2d 01 00 00 00 00 00 00
FinalStatus = 0x00000000
This maps to STATUS_SUCCESS
and implies that the request will be retried.
Note
When you interpret the hexadecimal data in the Event ID to the status code, remember that the values are represented in the little endian format.
The destination disk
You can use this data to help determine on what disk the problem occurred:
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
It may be easier to identify the volume by using the symbolic link listed to the drive in the description of the Event ID. For example, DeviceHarddisk3DR3
.
Note
The destination disk information is how it appears to the operating system. Storage virtualization and multipath I/O software may mask what is presented to the operating system. This information may not directly correspond to the physical mappings.
The SCSI Request Block (SRB) parameters
In the example in the Summary section, the ScsiStatus is 0x02 (first byte in line 0038), and SrbStatus is 0x84 (second byte in line 0038). This provides the following information:
0038: 02 84 00 00 00 29 06 00
ScsiStatus of 0x02:SCSISTAT_CHECK_CONDITION
SCSI status codes: (from SCSI.H)
SrbStatus of 0x84:SRB_STATUS_AUTOSENSE_VALID | SRB_STATUS_ERROR
Ahead Software SCSI & RAID Devices Driver
SRB status masks:
You must break down SRB status masks because they are a substatus. They are combined with the SRB status codes.
In the earlier 0x84 example, 0x8_ is a status mask. Therefore, SRB_STATUS_AUTOSENSE_VALID
and 0x04 is the SRB status code. This means SRB_STATUS_ERROR
.
The sense code
If the SRB status is that the autosense is valid, the sense codes provide additional information. In the example in the Summary section, the sense code is 0x06 (seventh byte in line 0038), and the additional sense code is 0x29 (sixth octet in line 0038). This provides the following information:
0038: 02 84 00 00 00 29 06 00
Ahead Software Scsi & Raid Devices Drivers
The sense key of 0x06:
The byte at offset 003e is the sense key. This maps to the following:
Sense codes: (from SCSI.H)
Additional sense code (ASC) of 0x29:
The additional sense code is located in the sixth byte in line 0038 at offset 003d and has a value of 29. For the specified sense key, this maps to the following:
Ahead Software Scsi & Raid Devices Driver Windows 7
Additional sense codes: (from SCSI.H)
Ahead Software Scsi & Raid Devices Driver Download
Additional sense code qualifier (ASCQ) of 0x00:
The additional sense code qualifier is located in the fifth byte in line 0038 at offset 003C and has a value of 00. It is 00 in this example, so it does not apply for the specified ASC. This list of additional sense code qualifiers for each sense code is too large to include in this article. View SCSI.H in the DDK for more information.
Note
All ASC and ASCQ values above 0x80 are vendor specific and are not documented in the SCSI specification or Microsoft DDK. Refer to the hardware vendor.
The Command Descriptor Block (CDB) parameters
The CDB starts at the line with an offset of 0040:
Ahead Software Scsi & Raid Devices Driver Updater
0040: 2a 60 0a 82 75 29 00 00
0048: 80 00
The bytes at offset 0x40 represent the CDB code, the bytes from offset 0x43 to 0x46 represent the starting sector, and offset 0x47 to 0x49 represent the number of sectors involved in the operation.
Note
The CDB data section is not in the little-endian format, therefore the bytes should not be flipped. Be careful when you decode this section because the format is different than earlier sections.
SCSI CDB codes: (from SCSI.H)