Warum sehe ich einen Unterschied zwischen der WSL-Laufwerkliste und der Registrierung?

Warum sehe ich einen Unterschied zwischen der WSL-Laufwerkliste und der Registrierung?

Ich versuche zu verstehen, wie WSL2 mit dem Host-Betriebssystem Win11 interagiert.

Die WSL-Laufwerkliste meldet kurz meinen USB-Stick als \\.\PHYSICALDRIVE2und meine interne SSD als\\.\PHYSICALDRIVE0

Aber in regedit HKLM\HARDWARE\DEVICEMAP\Scsi\Scsi Port 0\ Scsi Bus 0\Target ID 0\Logical Unit Id 0\DeviceNamesteht, meine SSD istPhysicalDrive2

Irgendeine Idee, warum diese Diskrepanz besteht?

Antwort1

Ich bin mir nicht sicher, warum die Registrierung für Ihr Laufwerk ein meldet DeviceName(oder was diese Eigenschaft erzeugt haben könnte). Im Allgemeinen scheint der HARDWAREAbschnitt der Registrierung ziemlich undokumentiert zu sein. Und wie Sie sehen können, ist dasnichtder eigentliche Name, den Sie sowieso zum Mounten verwenden müssen.

Zur Referenz: Ich habe drei SSDs in meinem System und keine hat ein DeviceNameim SCSI-Bereich. Beispiel:

> Get-ChildItem 'HKLM:\HARDWARE\DEVICEMAP\Scsi\Scsi Port 5\Scsi Bus 0\Target Id 0\'


    Hive: HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\Scsi\Scsi Port 5\Scsi Bus 0\Target Id 0

Name                           Property
----                           --------
Logical Unit Id 0              InquiryData          : {0, 0, 6, 18...}
                               SerialNumber         : xxxx-xxxxx-xxx
                               Identifier           : NVMe    Samsung SSD 950 BXX7
                               DeviceType           : DiskPeripheral
                               DeviceIdentifierPage : {0, 131, 0, 24...}

Es kann sein, dass eine frühere Windows-Version oder eine andere Software dies irgendwann auf Ihrem System festgelegt hat. Selbst wenn dieser Name in der Registrierung gültig ist, gilt er wahrscheinlich fürDasbestimmter SCSI-Bus/Port und nicht das System als Ganzes.

Aber unabhängig davon ist die SCSI-Bus-Registrierung nicht die Quelle der Namen, die Sie für die WSL-Montage verwenden müssen. Diese werden von WMI (über CIM) zurückgegeben. Wie Sie in sehen könnenDieser Artikel:

Woher stammen diese Daten? Die Antwort lautet: Diese Daten stammen aus vielen Quellen, beispielsweise aus der WinAPI, der Windows-Registrierung, dem SMBIOS oder benutzerdefinierten Funktionen, die in die MOF-Definition eingebettet sind.

Wir können also nicht unbedingt davon ausgehen, dass Sie die Laufwerksinformationen direkt aus der Registrierung abrufen können. Aus diesem Artikel geht auch hervor, dass es anscheinend eine Möglichkeit gibt, herauszufinden, wie WMI diese Werte abruft, aber ich habe mich nicht eingehend mit diesem Delphi-Code befasst, um zu sehen, wie er PowerShell zugeordnet werden könnte. Der entsprechende PowerShell-Artikel scheint von Microsoft offline genommen worden zu sein, wahrscheinlich, weil WMI in PowerShell durch CMI ersetzt wurde.

Als dieMicrosoft Docssagen wir, weiterhin verwenden...

GET-CimInstance -query "SELECT * from Win32_DiskDrive"

... um den richtigen Namen für die Verwendung mit zu erhalten wsl --mount. Beachten Sie auch, dass dieseTunscheinen auf die gleichen "Datenträgernummern" abgebildet zu sein, die Sie inComputerverwaltung -> Speicher -> Datenträgerverwaltung.

Antwort2

beim Betrachten einiger anderer Systeme stellte sich heraus, dass keines davon einen DeviceName-Wert für eines der HKLM:\HARDWARE\DEVICEMAP\Scsi...-Geräte hatte, das war also reine Zeitverschwendung ...

Ich habe jedoch festgestellt, dass Microsoft-Windows-StorageSpaces-Driver/Operational eventID 207 eine Gerätenummer enthält, die mit der Nummer \.\PHYSICALDRIVE von Get-CimInstance übereinstimmt. Außerdem enthält sie die DriveID {GUID} und die Seriennummer des Laufwerks, nach der ich letztendlich gesucht habe.

verwandte Informationen