Microsoft Knowledge Base article Q325606 contains:
This article describes event ID 51 entries that may be recorded in the System event log. This is an example of an event ID 51 entry that is logged in the System event log when the system is writing information to the physical disk:
MORE INFORMATIONAn event ID 51 entry is a generic error entry for any type of error that occurs when Windows is paging information to input/output (I/O). A paging operation occurs when Windows either swaps a page of memory from memory to disk, or when Windows retrieves a page of memory from disk to memory. This is part of the memory management features of Windows XP.
Not every disk access is paging I/O. Programs can perform non-buffered I/O to access disk data. Also, Windows is not necessarily writing to the paging file (Pagefile.sys), which the name implies. This may be any type of data access. Event ID 51 is similar to event ID 9 or 11, but it is not as serious an error. Event ID 51 occurs only during a paging I/O operation. If this error occurs when no paging operation is occurring, an event is not logged, which is unlike event ID 9 or 11.
You can troubleshoot event ID 51 in the same manner as event ID 9 or 11. For additional information, click the article number below to view the article in the Microsoft Knowledge Base:
Entries in the Data SectionBecause event ID 51 has an additional Cdb field, you must consider the following information when you are reviewing the data section of an event ID 51 entry.
The Error CodeIn the sample entry in the "Summary" section of this article, the error code is listed in the second line, which starts with "0008:" and includes the last four octets in the line.
ErrorCode = 0x80040033.
This is the code for error 51, which is the same for all event ID 51 errors:
When you are interpreting the status code from the hexadecimal data in the event ID entry, remember that the values are represented in the little Endian format.
The Final Status CodeIn the example in the "Summary" section of this article, the final status code is listed in the third line, which starts with "0010:" and includes the last four octets in the line.
FinalStatus = 0x00000000.
This event ID data indicates "success," so it is probable that no loss of data occurred.
The SCSI Request Block (SRB) ParametersYou can use this data to you help determine where the problem occurred. The Data section is represented in the following format:
DumpData\[1\] = TargetId
DumpData\[2\] = LUN
DumpData\[3\] = Cdb
DumpData\[4\] = ErrorEncountered 8 | ScsiStatus
ScsiStatus of 0x02: SP_UNEXPECTED_DISCONNECT
SRB status codes (from the Srb.h file):
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
SRB status masks must be broken down; they are a sub-status. They are combined with the error that is listed earlier in this article:
0x80 = SRB_STATUS_AUTOSENSE_VALID
SCSI status codes (from the Scsi.h file):
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