Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ WIN32\u查找\u数据问题-cFileName_C++_Winapi - Fatal编程技术网

C++ WIN32\u查找\u数据问题-cFileName

C++ WIN32\u查找\u数据问题-cFileName,c++,winapi,C++,Winapi,我的代码有问题;) 一切似乎都很好,但当我将可执行文件复制到另一台计算机(windows 2003)时,我得到了 但是对于pszFileName,我得到了非常奇怪的输出,指定FindExInfoMaxInfoLevel是不正确的。报告说: FindExInfoMaxInfoLevel 此值用于验证。支持的值小于此值 此外,从您对FindFirstFileEx的使用情况来看,我看不出您为什么不使用更简单的。指定FindInfoMaxInfoLevel是不正确的。报告说: FindExInfoMax

我的代码有问题;)

一切似乎都很好,但当我将可执行文件复制到另一台计算机(windows 2003)时,我得到了
但是对于pszFileName,我得到了非常奇怪的输出,指定FindExInfoMaxInfoLevel是不正确的。报告说:

FindExInfoMaxInfoLevel

此值用于验证。支持的值小于此值


此外,从您对FindFirstFileEx的使用情况来看,我看不出您为什么不使用更简单的。

指定FindInfoMaxInfoLevel是不正确的。报告说:

FindExInfoMaxInfoLevel

此值用于验证。支持的值小于此值


此外,从您对FindFirstFileEx的使用情况来看,我看不出您为什么不使用更简单的。

在未首先检查
hFind
是否有效的情况下,您不能使用
FindData
中的输出字段。从:

如果该功能失败或无法 从中的搜索字符串中查找文件 lpFileName参数,返回 值无效。\u句柄\u值和 lpFindFileData的内容包括 不确定

因此,您应该(在解决了此处答案中描述的API调用中的其他问题之后):


如果未首先检查
hFind
是否有效,则不能使用
FindData
中的输出字段。从:

如果该功能失败或无法 从中的搜索字符串中查找文件 lpFileName参数,返回 值无效。\u句柄\u值和 lpFindFileData的内容包括 不确定

因此,您应该(在解决了此处答案中描述的API调用中的其他问题之后):


没有足够的代码来诊断问题,尤其是没有任何错误检查的证据。然而,在你的帖子里确实有一些难闻的东西。对strncpy_s()的调用表示pszFileName是指向包含280个元素的数组的指针。这个数字是从哪里来的?这只是猜测吗?在Windows上它永远不会超过260,为什么它会更多?我怀疑当你把它变成一个实数时,就像传递给函数的一个参数,而不是猜测你也会解决问题。

没有足够的代码来诊断问题,尤其是没有任何错误检查的证据。然而,在你的帖子里确实有一些难闻的东西。对strncpy_s()的调用表示pszFileName是指向包含280个元素的数组的指针。这个数字是从哪里来的?这只是猜测吗?在Windows上它永远不会超过260,为什么它会更多?我怀疑当你把它变成一个实数时,就像一个传递给函数的参数,而不是猜测你也会解决这个问题。

pszFileName是如何声明和初始化的?hFind在win2k3上是有效的句柄吗?pszFileName是如何声明和初始化的?hFind在win2k3上是有效的句柄吗?非常感谢,这个错误实际上是关于FindExInfoMaxInfoLevel的!非常感谢,错误实际上是关于FindExInfoMaxInfoLevel的!
hFind = FindFirstFileEx( szPath, FindExInfoMaxInfoLevel, &FindData, FindExSearchNameMatch, NULL , 0);

strncpy_s( pszFileName, 280, FindData.cFileName, strlen(FindData.cFileName));
hFind = FindFirstFileEx( szPath, /* replace FindExInfoMaxInfoLevel here */, 
    &FindData, FindExSearchNameMatch, NULL , 0);
if (hFind != INVALID_HANDLE_VALUE)
{
  strncpy_s( pszFileName, 280, FindData.cFileName, strlen(FindData.cFileName));
}