Когда использовать \\. \ C: и когда использовать c :? - PullRequest
3 голосов
/ 01 мая 2011

Если символическая ссылка, созданная для device1, равна \\??\device (ядро), то при обращении к ней должно быть \\.\device (пространство пользователя), почему?

Символическое значение для C: должно быть \\.\c: почему \\. можно опустить?

1 Ответ

4 голосов
/ 01 мая 2011

Windows поддерживает две формы имен файлов. Есть файлы, имена которых соответствуют соглашению об именах Windows (: \), а те, которые не (\ device \ harddisk0 \ partition5 ...). Префикс «\\. \» Применяется к файлам, которые не вписываются в соглашение об именах Windows.

Внутренне Windows поддерживает пространство имен объекта, чьи имена происходят из того же корневого объекта. Win32 API будет преобразовывать между соглашением об именах Windows и внутренним соглашением об именах, когда это возможно.

Однако если вам нужен доступ к файлу, имя которого не соответствует внутреннему соглашению об именах, вы можете использовать префикс "\\. \", Чтобы обойти логику преобразования имен.

Обратите внимание, что буквы диска не соответствуют соглашению об именах окон (они не имеют \ после буквы диска), поэтому вам нужно использовать форму \\. \, Чтобы открыть диск.

Есть куча строительных лесов, чтобы все это работало, вы можете увидеть большую их часть с помощью инструмента WinObj . В частности обратите внимание на глобальное пространство имен \ \ - обратите внимание на символическую ссылку Global ?? \ C:, которая отображается на диск C.

...