
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).
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.