Informações sobre a ID do evento 51
A ID do evento 51 pode ocorrer quando você grava informações no disco físico. Este artigo descreve como decodificar a seção de dados de uma mensagem de evento da ID do evento 51.
Aplica-se a: Windows 7 Service Pack 1, Windows Server 2012 R2
Número original do KB: 244780
Resumo
Quando você grava informações no disco físico, a seguinte mensagem de evento pode ser registrada no log do Sistema:
Event ID: 51
Event Type: Warning
Event Source: Disk
Description: An error was detected on device \Device\Harddisk3\DR3 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
Observação
O dispositivo na descrição e os dados hexadecimal específicos podem variar.
Mais informações
Se ocorrer um erro genérico quando as informações das páginas do computador de ou para o disco, uma mensagem de evento da ID do evento 51 será registrada. Em uma operação de paginação, o sistema operacional troca uma página de memória da memória para o disco ou recupera uma página de memória do disco para a memória. Faz parte do gerenciamento de memória do Windows.
No entanto, o computador pode registrar essa mensagem de evento quando carrega imagens de um dispositivo de armazenamento, lê e grava em arquivos mapeados localmente ou em qualquer arquivo (desde que seja E/S em buffer). O computador não registra essa mensagem de evento quando executa E/S não oferecida. Você pode solucionar problemas de uma mensagem de evento da ID do Evento 51 exatamente como solucionar problemas de mensagens de evento ID 9 ou ID de Evento 11.
Em determinadas circunstâncias, o sistema registra a seguinte mensagem de evento da ID do Evento 51:
An error was detected on device \Device\DeviceName during a paging operation
Nesse caso, não são experimentados efeitos nocivos. Por exemplo, a ID do Evento 51 é registrada quando mídia em branco, como CDR, CDRW, DVDR, é inserida em uma unidade gravável enquanto um dispositivo USB está conectado. O sistema registra o evento mesmo que o disco seja gravável e o dispositivo USB ainda seja utilizável. Nesses casos específicos, você pode ignorar com segurança as entradas de log. Nenhuma ação é necessária.
Observação
No Windows XP e no Windows Server 2003, o DeviceName pode ser truncado devido à limitação de tamanho da entrada do log de eventos. Como resultado, o número de disco rígido exibido ou o próprio nome do objeto do dispositivo podem estar incorretos. Como uma grande quantidade de informações é armazenada na seção de dados, o espaço disponível para o DeviceName é reduzido. Nesse caso, você pode encontrar o dispositivo apropriado examinando os dados de disco de destino armazenados na seção de dados. Para obter mais informações, consulte Decodificar a seção de dados de uma mensagem de evento da ID do evento 51.
No Windows Vista e nas versões posteriores, o tamanho da entrada do log de eventos foi aumentado e DeviceName não está truncado.
Você pode usar os dados binários associados a qualquer erro DE DISCO (ID do evento 7, 9, 11, 51 e outras IDs de Evento) para ajudá-lo a identificar o problema decodificação da seção de dados.
Uma ID de Evento 51 tem uma caixa CDB (Bloco de Descritor de Comando) extra. Considere as informações a seguir ao examinar a seção de dados de uma mensagem de evento da ID do evento 51.
Decodificar a seção de dados de uma mensagem de evento da ID do evento 51
Ao decodificar a seção de dados do exemplo na seção Resumo , você pode ver que uma tentativa de executar uma operação de gravação no LUN 3 começando no setor 0x2975820a para setores 0x0080 falha porque o barramento foi redefinido, mas a solicitação será repetida. Posteriormente, este artigo lista as etapas específicas para decodificar este exemplo.
As tabelas a seguir descrevem o que cada deslocamento representa:
Deslocamento | Comprimento | Values |
---|---|---|
0x00 | 1 | Tipo de operação: 0x03 = Leitura, 0x04 = Gravação, 0x0F = IOCTL |
0x01 | 1 | Número de repetições restantes |
0x02 | 2 | Dump Data Size 0x0068 |
0x04 | 2 | Número de cadeias de caracteres 0x0001 |
0x06 | 2 | Deslocamento para o nome do dispositivo |
0x08 | 2 | Utilizadas |
0x0a | 2 | Bytes de preenchimento |
0x0c | 4 | Código de erro NTSTATUS |
0x10 | 4 | Valor de erro exclusivo |
0x14 | 4 | NTSTATUS Status Final 0x00000000 = a solicitação será repetida |
0x18 | 4 | Número de sequência – Não utilizado |
0x1c | 4 | Código de Controle de Io (não se aplica a este evento) |
0x20 | 8 | Deslocamento de byte para o setor ruim, se houver |
0x28 | 8 | Contagem de tiques quando o erro ocorreu |
0x30 | 4 | Número da porta – Não utilizado |
0x34 | 1 | Sinalizadores de Erro |
0x35 | 3 | Utilizadas |
0x38 | 88 | Estrutura de bloco de solicitação SCSI |
0x90 | 18 | Estrutura de dados sense |
Seções-chave para decodificar
Aqui estão as seções-chave a serem decodificadas.
O código de erro
No exemplo que está na seção Resumo , o código de erro é listado na segunda linha. Essa linha começa com 0008: e inclui os últimos 4 bytes na linha.
0008: 00 00 00 00 33 00 04 80
ErrorCode = 0x80040033
Esse código é o código para o erro 51. Esse código é o mesmo para todas as mensagens de evento da ID de Evento 51:
IO_WARNING_PAGING_FAILURE
Observação
Ao interpretar os dados hexadecimal na ID de Evento para o código status, lembre-se de que os valores são representados no formato de endiano pequeno.
O código de status final
No exemplo na seção Resumo, o código de status final é listado em 0x14 (na terceira linha) que começa com 0010: e inclui os últimos quatro octetes nessa linha.
0010: 2d 01 00 00 00 00 00 00
FinalStatus = 0x00000000
Ele mapeia para STATUS_SUCCESS
e implica que a solicitação será repetida.
Observação
Ao interpretar os dados hexadecimal na ID de Evento para o código status, lembre-se de que os valores são representados no formato de endiano pequeno.
O disco de destino
Você pode usar esses dados para ajudar a determinar em qual disco o problema ocorreu:
0028: 01 00 00 00 04 00 00 00
ID do caminho = 0x0000001, ID de destino = 0x0000004
0030: 03 00 00 2a 00 00 00
LUN = 0x0000003
Talvez seja mais fácil identificar o volume usando o link simbólico listado para a unidade na descrição da ID do evento. Por exemplo, \Device\Harddisk3\DR3
.
Observação
As informações do disco de destino são como elas aparecem para o sistema operacional. A virtualização de armazenamento e o software de E/S multipata podem mascarar o que é apresentado ao sistema operacional. Essas informações podem não corresponder diretamente aos mapeamentos físicos.
Os parâmetros SRB (Bloco de Solicitação scsi)
No exemplo na seção Resumo , o ScsiStatus é 0x02 (primeiro byte na linha 0038) e SrbStatus é 0x84 (segundo byte na linha 0038). Ele fornece as seguintes informações:
0038: 02 84 00 00 00 29 06 00
ScsiStatus de 0x02:
SCSISTAT_CHECK_CONDITION
SCSI status códigos: (do 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 de 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
(used by the port driver to indicate that a non-scsi-related error occurred)
0x38 - 0x3f = Srb status values reserved for internal port driver use.
Máscaras de status SRB:
0x80 = SRB_STATUS_AUTOSENSE_VALID
0x40 = SRB_STATUS_QUEUE_FROZEN
Você deve dividir máscaras de status SRB porque elas são um substato. Eles são combinados com os códigos de status SRB.
No exemplo 0x84 anterior, 0x8_ é uma máscara de status. Portanto, SRB_STATUS_AUTOSENSE_VALID
e 0x04 é o código status SRB. Significa SRB_STATUS_ERROR
.
O código de sentido
Se o SRB status for que o autosense é válido, os códigos de sentido fornecem mais informações. No exemplo na seção Resumo , o código de sentido é 0x06 (sétimo byte na linha 0038) e o código de sentido adicional é 0x29 (sexto octeto na linha 0038). Ele fornece as seguintes informações:
0038: 02 84 00 00 00 29 06 00
A chave de sentido do 0x06:
O byte em deslocamento 003e é a chave de sentido. Ele mapeia para:
0x06 = SCSI_SENSE_UNIT_ATTENTION
Códigos de sentido: (do 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 (código de sentido) adicional de 0x29:
O ASC está localizado no sexto byte na linha 0038 no deslocamento 003d e tem um valor de 29. Para a chave de sentido especificada, ela mapeia para:
0x29 = SCSI_ADSENSE_BUS_RESET
Códigos de sentido adicionais: (do 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 (qualificação de código de sentido) adicional de 0x00:
O ASCQ está localizado no quinto byte na linha 0038 no deslocamento 003C e tem um valor de 00. Ele é 00 neste exemplo, portanto, ele não se aplica ao ASC especificado. Esta lista de ASCQ para cada código de sentido é muito grande para ser incluída neste artigo. Exibir SCSI. H no DDK para obter mais informações.
Observação
Todos os valores ASC e ASCQ acima 0x80 são específicos do fornecedor e não estão documentados na especificação SCSI ou no Microsoft DDK. Consulte o fornecedor de hardware.
Os parâmetros CDB (Bloco de Descritor de Comando)
O CDB começa na linha com um deslocamento de 0040:
0040: 2a 60 0a 82 75 29 00 00
0048: 80 00
Os bytes em deslocamento 0x40 representam o código CDB. Os bytes de deslocamento 0x43 para 0x46 representam o setor inicial e compensam 0x47 para 0x49 representam o número de setores envolvidos na operação.
Observação
A seção de dados cdb não está no formato de little-endian. Portanto, os bytes não devem ser invertidos. Tenha cuidado ao decodificar esta seção, pois o formato é diferente das seções anteriores.
0x2a = Write request
0x0a827529 = The starting sector
0x0080 = The number of sectors
Códigos de CDB scsi: (do 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
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários