1

http://msdn.microsoft.com/en-us/library/windows/desktop/aa365740%28v=vs.85%29.aspx

cFileName
文件的名称。

的值MAX_PATH几乎相同,但在这种情况下使用第一个会产生误导。无论如何,如果他们的意思是带有名称的完整路径,应该是吗?使用的目的是什么?_MAX_FNAMEcFileName[MAX_PATH+_MAX_FNAME];MAX_PATH

4

2 回答 2

5

MAX_PATH常量表示整个路径的最大长度,包括文件名和扩展名。无论是相对路径、完全限定路径,甚至只是一个文件名,都无关紧要;它们都具有相同的最大长度。

因此,您永远不会看到MAX_PATH + _MAX_FNAME,因为这将超过路径允许的最大长度。

您将在本文中找到几乎所有您想知道的有关 Win32 中路径的信息。请注意,某些 API(这些 API 通常会在 docs 中明确指出)接受长路径名,用特殊前缀表示,不受MAX_PATH.

在这种情况下,函数签名是正确的。但是,有时 MSDN 上会附有文档附带的示例代码片段,并且此示例代码的范围从风格上的好奇到完全令人厌恶的任何地方。在尝试调整您找到的示例代码时,使用良好的健康常识总是值得的。

于 2012-07-31T17:44:12.120 回答
2

这里没有错误。在受长度限制的 Windows API 中,名称的最大长度为(通常)MAX_PATH。无论名称是完全指定的绝对路径、相对路径还是只是文件名,长度限制仍然是MAX_PATH.

很可能底层文件系统有不同的限制。本地文件系统限制可能小于 260 是完全合理的。但如果 API 声明限制为 260 个字符,那么这就是使用该特定 API 时的限制。

如果您认为 MSDN 库不正确,检查起来很容易。查看 Windows 头文件中的定义并将其与 MSDN 库中给出的定义进行比较。您总是会发现 MSDN 库是准确的。

于 2012-07-31T17:40:15.870 回答