首页 > 解决方案 > MAX_PATH 是否足以保存 GetSystemDirectory() 的路径?

问题描述

据我了解,该路径将是一个单字母(驱动程序),后跟"\WINDOWS\SYSTEM32" 因此MAX_PATH足以容纳由GetSystemDirectory()填充的路径。所以这样做是安全的:

TCHAR dir[MAX_PATH] = {0};
if(GetSystemDirectory(dir, sizeof(dir) / sizeof(*dir)) == 0) {
  // check for GetLastError()
}

还是我错过了什么?

标签: windowswinapidirectorysystem

解决方案


GetSystemDirectory为( which isShGetFolderPath )的推荐替代方案提供的文档对它的pszPath参数进行了如下说明:

指向长度为 MAX_PATH 的以 null 结尾的字符串的指针,它将接收路径。如果发生错误或返回 S_FALSE,此字符串将为空。返回的路径不包含尾部反斜杠。例如,返回“C:\Users”而不是“C:\Users\”。

所以,是的,MAX_PATH将是一个足够大的缓冲区大小。


推荐阅读