Lösung

Lösung

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.

verwandte Informationen