此代码适用于家庭中的Windows XP,但在64位Windows 7上无法正常工作.尽管提供的文件夹中有超过50个文件,但循环仍未输入一次.它不仅没有进入,这也返回ERROR_NO_MORE_FILES了GetLastError.为什么?
string dir = "d:\\validfolder";
WIN32_FIND_DATA ffd;
HANDLE h = FindFirstFile(dir.c_str(), &ffd);
while(FindNextFile(h, &ffd))
{
// some operation
}
DWORD dw = GetLastError();// returns ERROR_NO_MORE_FILES
Run Code Online (Sandbox Code Playgroud)
我尝试Wow64DisableWow64FsRedirection但是没有效果.
您需要向目录添加文件通配符:
string dir = "d:\\validfolder\\*";
Run Code Online (Sandbox Code Playgroud)
它用于列出目录中的文件.否则,您只需要询问有关目录本身的信息.
至少我是如何阅读FindFirstFile的文档的
要检查不是根目录的目录,请使用该目录的路径,而不使用尾部反斜杠.例如,"C:\ Windows"的参数返回有关目录"C:\ Windows"的信息,而不是"C:\ Windows"中的目录或文件.要检查"C:\ Windows"中的文件和目录,请使用lpFileName"C:\ Windows*".
我不知道为什么它在XP上为你工作