\??
ist das virtuelle Objektverzeichnis des Kernels, in dem der Objektmanager nach symbolischen lokalen und globalen DOS-Geräten sucht. Zuerst überprüft es die lokalen DOS-Gerätelinks für die Anmeldesitzung des Benutzers in \Sessions\0\DosDevices\[Logon_AuthenticationId]
. Dann überprüft es die globalen DOS-Gerätelinks in \Global??
. Früher verwendete NT ein einziges Verzeichnis \DosDevices
. Heutzutage ist \DosDevices
ein Link zu \??
. Außerdem verfügt jedes lokale DOS-Geräteverzeichnis über eine "Globale" Verknüpfung, um den Zugriff auf globale Geräte zu ermöglichen, wenn ein lokales Gerät die globale beschattet (z. B. \\?\Global\Z:
) oder einem Gerätetreiber zu ermöglichen, ein globales Gerät zu erstellen, wenn es nicht in einem Systemthread ausgeführt wird.
Im User-Modus verwandelt sich die Laufzeitbibliothek in ntdll.dll einen vollständig qualifizierten DOS/Windows-Pfad zu einem NT-Pfad entweder durch \??\
für einen Laufwerksbuchstaben vorangestellt oder die führende \\
eines UNC-Pfad mit \??\UNC\
ersetzen - außer \\?\
und \\.\
Local-Device-Pfade werden einfach durch \??\
ersetzt. Aber zuerst wird ein \\.\
Gerätepfad einer Vorverarbeitung unterzogen, z. B. "." und ".." Komponenten, während \\?\
umgeht alle Benutzer-Modus-Vorverarbeitung.
Zum Beispiel wird typischerweise \\?\C:\Windows
in \??\C:\Windows
umgewandelt, was in \Global??\C:\Windows
aufgelöst wird. Das DOS-Laufwerk "C:" Laufwerksbuchstabe ist eine symbolische Verbindung zu dem NT-Datenträger-Gerät. Das endgültige Ziel hängt vom System ab. Beispielsweise kann der letzte NT-Pfad zu \Device\HarddiskVolume2\Windows
aufgelöst werden.
DOS-Gerätelinks wie Volume{00000000-0000-0000-0000-000000000000}
werden vom Mount-Point-Manager erstellt. Sie sind der Klebstoff zwischen persistenten Laufwerkbuchstaben, NTFS-Bereitstellungspunkten und dem derzeit verwendeten NT-Volume-Gerät, z. B. \Device\HarddiskVolume2
.
Nicht außerhalb des Themas. Nur für Programmierer interessant. –
Was ist der Kontext? \ ?? ist ein NT-Objekt-Manager-Pfad und \\? ist die rohe Pfadnotation zur Umgehung von Pfadlängenbeschränkungen/Erweiterung –
@AlexK .: Ich glaube, das ist '\\. \' nicht '\\? \'? –