
Ich habe einen physischen Geräteobjektnamen, zB "\Device\0000007c".
Wie finde ich in Windows 7 heraus, welches Gerät dieser ID entspricht, ohne im Geräte-Manager alle Geräte in meinem System einzeln durchzugehen, das Eigenschaftendialogfeld zu öffnen und mir den Eintrag „Physischer Geräteobjektname“ anzusehen?
ich fandSuchen Sie in Windows nach Geräten anhand von PDO-Kennungen (Physical Device Object)aber das stellte sich als ein XY-Problem heraus und beantwortet diese Frage nicht.
Ich habe versucht, in der Registrierung (Schlüssel/Werte/Daten) nach der Zeichenfolge „0000007c“, „0000007C“ und dem DWord 0x0000007C zu suchen, konnte jedoch nichts im Zusammenhang mit Geräten finden.
In älteren Windows-Versionen konnten Sie einen vollständigen Bericht aus dem Geräte-Manager ausdrucken (den ich dann durchsuchen konnte), aber in Windows 7 bietet der Geräte-Manager diese Option nicht mehr.
Antwort1
Lösung
Aus der offiziellen Dokumentation:
Wenn ein Bustreiber erkennt, dass untergeordnete Geräte ein- oder ausgesteckt wurden, informiert er den Plug & Play (PnP)-Manager. Als Reaktion darauf fordert der PnP-Manager den Bustreiber auf, für jedes untergeordnete Gerät, das mit dem übergeordneten Gerät (also dem Bus) verbunden ist, ein physisches Geräteobjekt (PDO) zu erstellen.
Quelle:WDM-Konzepte für WDF-Treiber
Um die benötigten Informationen zu erhalten, öffnen Sie eineEingabeaufforderungund führen Sie den folgenden Befehl aus:
wmic path Win32_PnPSignedDriver where "pdo like '%0000007c'" get devicename,pdo
Weiterführende Literatur
Antwort2
Wenn dies für einePhysische Festplattekönnen Sie die folgenden Powershell Core-Skriptzeilen verwenden, um die tatsächliche Festplatte herauszufinden, die durch die obskurePDO-Name:
# 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}
Beispielausgabe, bei der die Seriennummer unkenntlich gemacht und einige Spalten/Werte abgekürzt wurden, um diegefürchtete horizontale Bildlaufleiste:
Num FriendlyName SerialNumber MediaType CanPool OpStatus HealthStat Usage Size
--- ------------ ------------ --------- ------- -------- ---------- ----- ----
5 ST16000NM001G ZL123XYZ HDD False OK Healthy Auto-Sel 14.55 TB
Das Hacken des obigen Skripts für einen Gerätetyp, der keinPhysische Festplattebleibt dem Leser als Übung überlassen.