我正在维护一个包含用户空间和内核组件的传统Windows应用程序。用户空间通过注册表项将一些文件路径传递给设备驱动程序。
目前,代码找到该文件的完整路径,然后在将其写入注册表之前将\??\
添加到该文件中,因此该路径最终会出现\??\C:\foo.bar
之类的内容。驱动程序将此路径传递给InitializeObjectAttributes()
和ZwCreateFile()
,这会成功打开文件(或根据需要创建文件)。
我熟悉\\.\
前缀作为\DosDevices\
的别名,但不熟悉\??\
,并且它不是可以用谷歌搜索的东西。有谁知道这意味着什么?
答案 0 :(得分:2)
它是在引导过程中创建的命名空间子目录。其中包含指向Win32 API可访问资源的链接。在系统完全启动之前的引导期间,如果引用该路径,则在没有\ ?? \就位的情况下可能无法解析。