首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有CreateFile() WinAPI的本地驱动器的Windows文件和路径名

带有CreateFile() WinAPI的本地驱动器的Windows文件和路径名
EN

Stack Overflow用户
提问于 2019-01-23 21:06:27
回答 1查看 1.4K关注 0票数 3

一个在Windows和Windows 7中运行良好的应用程序突然出现了Windows 10 Pro的问题。然而,对于Windows10 IoT企业,它似乎运行良好。2018年5月,Windows 10似乎也运行得很好,但安装较新的Windows 10时,它就不能工作了。

经过一些调查后,我们发现应用程序似乎无法创建用于使用Windows 10 Pro的持久数据的文件集。

进一步看,我们发现完整的路径名是不正确的。看起来,存储文件的目录的路径名,虽然构造不正确,但在Windows和Windows 7中工作得很好,但在Windows 10 Pro中却不起作用。

生成的路径名如下(这些是路径反斜杠,而不是用于转义字符的C/C++反斜杠):

代码语言:javascript
复制
\C:\DirA\DirB\DirC

虽然正在生成的更正路径名如下所示:

代码语言:javascript
复制
\\.\C:\DirA\DirB\DirC

阅读MSDN关于命名文件、路径和命名空间的文章,我对构建有效路径名的许多不同方式感到有点困惑。看来不同的Windows文件系统(FAT16、FAT32、NTFS等)有不同的命名约定。

我应该使用什么路径名格式,以便我的应用程序能够使用多个不同版本的C:在本地驱动器上的特定目录中创建和打开文件?我特别感兴趣的是Windows7、POSReady 7、Windows 10和Windows10 IoT Enterprise (与Windows 10 IoT不同)。

我使用Win32 API CreateFile()函数来创建/打开文件。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-23 21:17:06

我应该使用什么路径名格式,以便我的应用程序能够使用多个不同版本的C:在本地驱动器上的特定目录中创建和打开文件?

你应该使用:

代码语言:javascript
复制
C:\DirA\DirB\DirC

或者,如果您需要MAX_PATH,并且不能/不能选择使用Windows10Version1607中引入的新longPathAware功能:

代码语言:javascript
复制
\\?\C:\DirA\DirB\DirC

不要使用\C:\DirA\DirB\DirC,这是不正确的格式化。

您不需要使用\\.\C:\DirA\DirB\DirC,尽管它可以工作。只是注意说:

"\\.\"前缀将访问Win32设备命名空间,而不是Win32文件命名空间。

通常,只在访问本地设备时才使用\\.\,如物理卷、串行/并行端口、命名管道、邮件插槽等,而不是访问文件系统上的条目。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54335653

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档