![什么样的文件路径以“\\.\”开头?](https://linux22.com/image/1632141/%E4%BB%80%E4%B9%88%E6%A0%B7%E7%9A%84%E6%96%87%E4%BB%B6%E8%B7%AF%E5%BE%84%E4%BB%A5%E2%80%9C%5C%5C.%5C%E2%80%9D%E5%BC%80%E5%A4%B4%EF%BC%9F.png)
我使用 Avast Web Shield,它使用环境变量拦截来自浏览器的 TLS 流量:
SSLKEYLOGFILE \\.\aswMonFltProxy\FFFFDE812B3DD840
虽然我其实并不介意它这样做,我也理解它这样做的原因,但我还是很好奇这个“路径”实际上指向什么。我的第一个想法是,这要么是某种 Netbios 地址,要么是套接字连接,但我真的不知道。
有谁知道这种“路径”是什么以及它是否实际上可以映射到磁盘上或内存中的物理文件?
答案1
前缀\\.
用于访问“设备命名空间”,其工作方式有点像 Linux 的 /dev 甚至 /sys。(它对应于\GLOBAL??
NT 对象命名空间中的子文件夹,因此您可以使用 WinObjEx 浏览其内容。)
据我所知,Windows 会逐步解析对象路径,提供与挂载点类似的效果,因此\\.\aswMonFltProxy
很可能是 Avast 的过滤驱动程序创建的设备对象,其余部分由该驱动程序本身处理 - 最有可能返回“管道”对象或类似对象。Firefox 可以将数据写入管道的一端,然后驱动程序接收。
(Windows 也有实际的命名管道,它们位于前缀下\\.\Pipe
并以非常类似的方式工作 - 例如,当访问时\\.\Pipe\whatever
,第一部分被解析为命名管道设备驱动程序,其余部分被解析为实际的 namedpipefs 对象。)
一般而言,这些对象都不是物理的 – 它们仅存在于内核内存中。只有一些对象(例如\\.\C:
)对应于物理磁盘并允许返回“真实”文件系统。