Solução

Solução

Eu tenho um nome de objeto de dispositivo físico, por exemplo, "\Device\0000007c".

No Windows 7, como descubro qual dispositivo corresponde a esse ID antes de passar por todos os dispositivos do meu sistema no Gerenciador de dispositivos, um de cada vez, abrindo a caixa de diálogo de propriedades e observando a entrada Nome do objeto do dispositivo físico?

eu encontreiEncontre o dispositivo no Windows com base nos identificadores do objeto de dispositivo físico (PDO)mas isso acabou sendo um problema XY e não responde a essa pergunta.

Tentei pesquisar no registro (chaves/valores/dados) a string "0000007c", "0000007C" e o dword 0x0000007C, mas não consegui encontrar nada relacionado a dispositivos.

No Windows mais antigo, você podia imprimir um relatório completo do Gerenciador de Dispositivos (que eu poderia pesquisar), mas no Windows 7 o Gerenciador de Dispositivos não tem mais essa opção.

Responder1

Solução

Da documentação oficial:

Quando um driver de barramento detecta que dispositivos filhos foram conectados ou desconectados, ele informa o gerenciador Plug and Play (PnP). Em resposta, o gerenciador PnP solicita ao driver do barramento que crie um objeto de dispositivo físico (PDO) para cada dispositivo filho conectado ao dispositivo pai (ou seja, o barramento).

Fonte:Conceitos WDM para drivers WDF

Para obter as informações necessárias, abra umprompt de comandoe execute o seguinte comando:

wmic path Win32_PnPSignedDriver where "pdo like '%0000007c'" get devicename,pdo

Leitura adicional

Responder2

Se isto for por umDisco Físico, você pode usar as seguintes linhas de script do Powershell Core para descobrir o disco real que está sendo identificado pelo obscuroNome DOP:

# Starting with a PDO name, likely copy-pasta'd from some obscure warning/error message
$pdo_name='\Device\0000005b'

# Step 1
$system_element_dev_id = Get-CimInstance Win32_PnPSignedDriver |
                           ? {$_.PDO -eq $pdo_name} |
                           Select-Object -ExpandProperty DeviceID

# Step 2: Use the proceeds from the above transaction to identify the "Disk Number"
$phys_disk_num = Get-CimInstance Win32_PNPDevice |
                   ? {[string]$_.SystemElement.DeviceID -eq $system_element_dev_id} |
                   Select-Object @{
                     n='disk_number';
                     e={[int]$_.SameElement.DeviceID.replace('\\.\PHYSICALDRIVE','')}
                   } |
                   Select-Object -expand disk_number

# Step 3: Profit! Get the info you were after
Get-PhysicalDisk | ? {$_.DeviceId -eq $phys_disk_num}

Exemplo de saída, com o número de série obscurecido e algumas colunas/valores abreviados para evitar otemida barra de rolagem horizontal:

Num FriendlyName  SerialNumber MediaType CanPool OpStatus HealthStat Usage        Size
--- ------------  ------------ --------- ------- -------- ---------- -----        ----
5   ST16000NM001G ZL123XYZ     HDD       False   OK       Healthy    Auto-Sel 14.55 TB

Hackeando o script acima para um tipo de dispositivo que não é umDisco Físicoficará como exercício para o leitor.

informação relacionada