2010-08-23 18 views
10

Co wiem, toCo oznaczają "\. ", " ?? ", "\? ", "\"?

\\.\ 

Jest on stosowany, gdy otwieramy urządzenia łącza symboliczne w trybie użytkownika

\??\ 

Jest używany podczas otwierania urządzenia w trybie jądra

\\?\ 

długa nazwa pliku

\\  

Ścieżka UNC.

Ale chcę wiedzieć więcej szczegółów.
Czy możesz dokładniej wyjaśnić te prefiksy.

Odpowiedz

12

http://msdn.microsoft.com/en-us/library/aa365247%28VS.85%29.aspx#paths

Najwyraźniej \?? jest skrótem dla \Global?? zgodnie z this article:

W konwencji nazewnictwa NT \ Globalny ?? można również nazwać \ ?? aby skrócić dostęp do .

+0

_To jest prawdziwe tylko w przypadku najnowszych wcieleń systemu Windows (MSDN najczęściej odwołuje się do najnowszych wersji). '\ ??' było dowiązaniem symbolicznym do '\ DosDevices' w przeszłości i sposób jego traktowania zależał w niewielkim stopniu od tego, czy usługi terminalowe były dostępne, czy nie. Dzięki terminalowi XP usługi były zawsze dostępne nawet w konsumenckich Windowsach, więc to się zmieniło. – 0xC0000022L

+0

@ 0xC0000022L, w rzeczywistości nie jest prawdą, że jest to tylko krótka forma "\ Global ??", w przeciwnym razie lokalne urządzenia DOS z sesją logowania nie działałyby. "\ ??" jest wirtualnym katalogiem "DosDevices" menedżera obiektów. Najpierw Menedżer obiektów sprawdza lokalne urządzenia zdefiniowane w "\ Sessions \ 0 \ DosDevices \\ [Logon_AuthenticationId]" przed sprawdzeniem "\ Global ??". Ponadto w katalogu lokalnym znajduje się symboliczne łącze "globalne", które zapewnia tworzenie lub uzyskiwanie dostępu do urządzenia globalnego, np. "\\? \ Global \ Z: \ Path". W dzisiejszych czasach klasyczny wpis "\ DosDevices" jest dowiązaniem symbolicznym do "\ ??". – eryksun

+0

@eryksun: Na początek zakwalifikowałem stwierdzenie w odpowiedzi ('\\ GLOBAL ??' nawet nie istniało w starszych wersjach Windowsa). Sposób, w jaki Menedżer obiektów sprawdza rzeczy, jest jednak przejrzysty dla użytkownika. Tak więc, podczas gdy nie zgłaszałem roszczenia, o które się spierasz, nie miałem racji, utrzymuję, że dla wszystkich praktycznych zastosowań programista trybu użytkownika oświadczenie jest wystarczająco szczegółowe i tak prawdziwe, jak to tylko możliwe bez otwierania całej puszki robaków. – 0xC0000022L