如果为device1创build的符号链接是\\??\device
(内核),访问它时应该是\\.\device
(用户空间),为什么?
C:
的符号应该是\\.\c:
\\.
为什么\\.
可以省略?
Windows支持两种形式的文件名称。 有些文件的名称遵循Windows命名约定(:\),而那些不符合(\ device \ harddisk0 \ partition5 …)的文件。 “\\。\”前缀应用于不符合Windows命名约定的文件。
Windows内部支持名称来源于同一根对象的对象名称空间。 Win32 API将在Windows命名约定和内部命名约定之间进行转换。
但是,如果您需要访问名称不符合内部命名约定的文件,则可以使用“\\。\”前缀绕过名称转换逻辑。
请注意,驱动器号不符合Windows命名约定(它们在驱动器号后没有\),因此您需要使用\\。\窗体打开驱动器。
有一堆脚手架使这一切工作,你可以看到很多与WinObj工具。 特别要注意Global ?? \ namespace – 注意映射到C盘的全局?? \ C:符号链接。