Localizar dispositivo no Windows com base em identificadores PDO (objeto de dispositivo físico)

6

Adquiri recentemente uma nova placa-mãe, processador e RAM. Eu reinstalei o Windows (x64 7 Ultimate) e todos os meus aplicativos para os novos componentes, mas é a mesma (varejo) licença do SO, placa de vídeo e unidade óptica do sistema antigo.

Cerca de duas semanas depois, vi um erro STOP na tela azul pela segunda vez. Na primeira vez que deixei um jogo em execução, culpei o jogo, mas desta vez verifiquei o log de eventos e encontrei um relatório de verificação de erros com os seguintes dados:

The bugcheck was: 0x0000009f (0x0000000000000003, 0xfffffa800a21f060, 0xfffff80000b9c3d8, 0xfffffa8007a12540).

Em seguida, fui primeiro para esta página e < a href="http://msdn.microsoft.com/en-us/library/ff559329%28v=vs.85%29.aspx"> e depois para esta página para mapear o que isso significa.

Com base na descrição do erro, pode ser que minha antiga fonte de alimentação não esteja à altura da tarefa do novo hardware. No entanto, minha nova cpu é classificada como 15 watts mais leve do que a antiga, então não acho que seja isso.

Também vejo que o valor 0xfffffa800a21f060 da verificação de erros é um "objeto de dispositivo físico". Um driver de dispositivo desatualizado parece um candidato muito mais provável. Eu quero rastrear esse número de volta para um nome de dispositivo e, em seguida, procure por um driver atualizado para esse dispositivo. Infelizmente, não tenho certeza do próximo passo.

Alguma ideia de como fazer isso? Parece que pode estar se referindo a um local na pilha de chamadas na memória; Eu ainda tenho o despejo de memória, se for necessário.

Atualização:
Eu encontrei o bugcheck da primeira tela azul. Parece assim:

The bugcheck was: 0x00000101 (0x0000000000000031, 0x0000000000000000, 0xfffff880009f1180, 0x0000000000000001).

E a página de referência associada: link

Este não fornece muito para continuar. Pode ser uma CPU defeituosa, mas eu ainda gostaria de rastrear o dispositivo a partir da última verificação de bug.

Atualização 2:
Com base nas instruções de uma resposta, consegui isso:

*******************************************************************************
*                                                                             *
*                        Bugcheck Analysis                                    *
*                                                                             *
*******************************************************************************

DRIVER_POWER_STATE_FAILURE (9f)
A driver is causing an inconsistent power state.
Arguments:
Arg1: 0000000000000003, A device object has been blocking an Irp for too long a time
Arg2: fffffa800a21f060, Physical Device Object of the stack
Arg3: fffff80000b9c3d8, Functional Device Object of the stack
Arg4: fffffa8007a12540, The blocked IRP

Debugging Details:
------------------


DRVPOWERSTATE_SUBCODE:  3

IMAGE_NAME:  usbhub.sys

DEBUG_FLR_IMAGE_TIMESTAMP:  4ce7a68e

MODULE_NAME: usbhub

FAULTING_MODULE: fffff88005600000 usbhub

CUSTOMER_CRASH_COUNT:  1

DEFAULT_BUCKET_ID:  VISTA_DRIVER_FAULT

BUGCHECK_STR:  0x9F

PROCESS_NAME:  System

CURRENT_IRQL:  2

STACK_TEXT:  
fffff800'00b9c388 fffff800'02d4b9c2 : 00000000'0000009f 00000000'00000003 fffffa80'0a21f060 fffff800'00b9c3d8 : nt!KeBugCheckEx
fffff800'00b9c390 fffff800'02cea652 : fffff800'00b9c4c0 fffff800'00b9c4c0 00000000'00000002 00000000'00000000 : nt! ?? ::FNODOBFM::'string'+0x34a90
fffff800'00b9c430 fffff800'02cea4f6 : fffffa80'08f0e0d0 fffffa80'08f0e0d0 00000000'00000000 00000000'00000000 : nt!KiProcessTimerDpcTable+0x66
fffff800'00b9c4a0 fffff800'02cea3de : 000001e1'889ca6f3 fffff800'00b9cb18 00000000'00ca4ace fffff800'02e55c48 : nt!KiProcessExpiredTimerList+0xc6
fffff800'00b9caf0 fffff800'02cea1c7 : 00000092'40cd33c3 00000092'00ca4ace 00000092'40cd33b2 00000000'000000ce : nt!KiTimerExpiration+0x1be
fffff800'00b9cb90 fffff800'02cd6a2a : fffff800'02e51e80 fffff800'02e5fcc0 00000000'00000002 fffff880'00000000 : nt!KiRetireDpcList+0x277
fffff800'00b9cc40 00000000'00000000 : fffff800'00b9d000 fffff800'00b97000 fffff800'00b9cc00 00000000'00000000 : nt!KiIdleLoop+0x5a


STACK_COMMAND:  kb

FOLLOWUP_NAME:  MachineOwner

FAILURE_BUCKET_ID:  X64_0x9F_3_AiCharger_IMAGE_usbhub.sys

BUCKET_ID:  X64_0x9F_3_AiCharger_IMAGE_usbhub.sys

Followup: MachineOwner
---------

Parece que o culpado pode ser um cartão usb via pci no sistema. Eu realmente não preciso mais da nova placa-mãe (8 portas USB em vez de apenas 4). Mantive-o no novo sistema porque não vi uma razão para não fazê-lo e porque estou sem a tampa do slot para o gabinete sem ele. Se as telas azuis continuar, provavelmente irei removê-lo.

Parece um pouco menos provável, mas também pode ser um driver imaturo para o controlador das minhas portas usb 3.0. Eu irei procurar um driver atualizado para essas portas, apenas no caso.

    
por Joel Coehoorn 07.07.2011 / 02:53

2 respostas

3

Sim. Você pode rastrear esta verificação de bugs.

1. O que você precisa é primeiro baixar as ferramentas de depuração do Windows aqui: link

2. Em seguida, você precisa dos símbolos de depuração do Windows 7 apropriados (você quer a versão 'varejo'. Não a versão 'verificada': link

3. Instale as ferramentas de Depuração normalmente. Instale os símbolos de Depuração para uma nova pasta denominada c:\Symbols . Quando terminar com ambos, abra o Debugging Tools for Windows, vá para o menu File e selecione "Symbol File Path". Substitua o que estiver na caixa por essa string (substituindo a letra da unidade e o caminho dos símbolos, se você optar por instalar os símbolos em algum outro lugar):

srv*c:\symbols*http://msdl.microsoft.com/download/symbols

4. Em seguida, com o Windows Explorer, vá para c: \ Windows \ Minidump (assumindo C: é onde você instalou o Windows). Dentro você encontrará os chamados arquivos de minidespejo. Estes contêm as informações em seu BSODS. Um arquivo por BSOD com o nome da data do BSOD.

5. Arraste o último para a área cinza vazia do Debugging Tools for Windows (ou abra-o no menu arquivo). O Depurador começará a analisá-lo, após o qual você poderá ver um link !analyze -v que você pode clicar.

6. Clique nele e você receberá o relatório de verificação de erros. Atualize sua pergunta com os resultados desta análise e muitos de nós aqui serão capazes de sugerir o que pode ser o problema.

Um exemplo do que você pode querer colar em sua pergunta acima é dado abaixo (de um dos meus próprios arquivos de minidespejo do início deste ano, quando descobri que eu tinha RAM defeituosa:

BugCheck 1000008E, {c0000005, 940c23de, abb34b0c, 0}

Probably caused by : Npfs.SYS ( Npfs!NpRemoveAllAttributesFromList+14 )

Followup: MachineOwner

[..]

KERNEL_MODE_EXCEPTION_NOT_HANDLED_M (1000008e)
[...]
Arguments:
Arg1: c0000005, The exception code that was not handled
Arg2: 940c23de, The address that the exception occurred at
Arg3: abb34b0c, Trap Frame
Arg4: 00000000

EXCEPTION_CODE: (NTSTATUS) 0xc0000005 - The instruction at 0x%08lx referenced memory at 0x%08lx. The memory could not be %s.

FAULTING_IP: 
Npfs!NpRemoveAllAttributesFromList+14
940c23de 897004          mov     dword ptr [eax+4],esi
    
por 07.07.2011 / 04:26
0

Quando você carregou o dmp no Windbg e carregou os símbolos , execute !podev 0xfffffa800a21f060 (endereço do argumento 2: Arg2: fffffa800a21f060, Physical Device Object of the stack ).

Isso despeja o Objeto de Dispositivo Físico (PDO).

Isso

X64_0x9F_3_AiCharger_IMAGE_usbhub.sys

me diz que o driver ASUS Ai Charger causou isso.

    
por 14.12.2016 / 17:04