FindNextFileA返回6(ERROR_INVALID_HANDLE)

647

有一个功能可以递归查找文件夹中的所有文件(存储在logPath文件夹名称的末尾“ \”)。它用于64位控制台应用程序(在MSVC 2008中编译),并在Win7 64位OS上运行。

当我运行“ program.exe folder_to_find”之类的应用程序时,它运行良好。

当我运行“ program.exe folder_to_find >> result.txt”之类的应用程序时,它失败并返回错误6(ERROR_INVALID_HANDLE),返回FindNextFileA(即使没有对大文件夹进行递归调用)。例如,它可以在文件夹中找到前150个文件,而不是现有的240个文件。

void FindFiles(const std::string &logPath, FileList& fileList)
{
    WIN32_FIND_DATAA fd;
    HANDLE f = FindFirstFileA((logPath + "*").c_str(), &fd);

    if (f == INVALID_HANDLE_VALUE)
    {
        printf("No files found at %s - %d\n", logPath.c_str(), GetLastError());
        return;
    }

    FileList dirList;
    do
    {
        if (strcmp(fd.cFileName, ".") == 0)
            continue;
        if (strcmp(fd.cFileName, "..") == 0)
            continue;
        std::string path = logPath + fd.cFileName;
        printf("Processing %s\n", path.c_str());
        if (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
            dirList.push_back(path);
        else
            fileList.push_back(path);
    }
    while (FindNextFileA(f, &fd) != 0);

    DWORD err = GetLastError();
    if (err != ERROR_NO_MORE_FILES)
    {
        printf("Unexpected error in FindNextFileA(%s): %d\n", logPath.c_str(), err);
        fflush(stdout);
        abort();
    }

    FindClose(f);

    //for(FileList::const_iterator it = dirList.begin(); it != dirList.end(); ++it)
    //  FindFiles(*it, fileList);
}
647

有一个boost::thread t,我把它的句柄存放在HANDLE h = t.native_handle()

有人打来电话CloseHandle(h),稍后再关闭。

我忘记了,然后boost::~thread()析构函数也关闭了它的句柄。


HANDLE h = NULL;
::DuplicateHandle(..., t.native_handle(), &h, ...)
关闭前我将线程句柄重复一遍之后-问题消失了...

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

FindNextFileA返回6(ERROR_INVALID_HANDLE)

来自分类Dev

无法关闭带有 ERROR_INVALID_HANDLE 的套接字句柄 (6)

来自分类Dev

更改线程优先级ERROR_INVALID_HANDLE

来自分类Dev

c#使用SetClipboardData失败,并显示ERROR_INVALID_HANDLE

来自分类Dev

EnumProcessModules失败,内部进程中出现ERROR_INVALID_HANDLE

来自分类Dev

WSARecv sometimes return "invalid handle (error no 6)" for a socket associated with an IOCP port. (C++)

来自分类Dev

WinHttpSendRequest返回ERROR_INVALID_PARAMETER

来自分类Dev

ReadMsgQueue返回ERROR_INVALID_PARAMETER

来自分类Dev

ReadMsgQueue返回ERROR_INVALID_PARAMETER

来自分类Dev

是什么使cuLaunchKernel失败并显示CUDA_ERROR_INVALID_HANDLE?

来自分类Dev

ReadFile在第二次调用时返回INVALID_HANDLE

来自分类Dev

WIN API ReadFile()返回GetLastError()ERROR_INVALID_PARAMETER

来自分类Dev

WIN API ReadFile()返回GetLastError()ERROR_INVALID_PARAMETER

来自分类Dev

IDXGIFactory4 :: CreateSwapChain返回DXGI_ERROR_INVALID_CALL

来自分类Dev

查询蓝牙设备时,SetupDiEnumDeviceInterfaces返回ERROR_INVALID_PARAMETER

来自分类Dev

Windows 读取文件返回 ERROR_INVALID_PARAMETER 87

来自分类Dev

VirtualAllocEx 失败 GetError 返回 ERROR_INVALID_ADDRESS

来自分类Dev

(WIN32: 1400 ERROR_INVALID_WINDOW_HANDLE) 使用智能卡签署 CSR 时

来自分类Dev

HttpQueryServiceConfiguration错误INVALID_HANDLE

来自分类Dev

禁用快速编辑模式时,SetConsoleMode返回ERROR_INVALID_PARAMETER

来自分类Dev

响应通知POST,供应商系统返回INVALID或ERROR-Sagepay服务器

来自分类Dev

带有FSCTL_SET_ZERO_DATA的DeviceIoControl返回ERROR_INVALID_PARAMETER

来自分类Dev

Jenkins 2.60.2 在运行 Gradle 任务时返回“CreateProcess error=267, The directory name is invalid”

来自分类Dev

Invalid Binary Error

来自分类Dev

google服务帐户示例返回“刷新OAuth2令牌时发生错误{“ error”:“ invalid_grant”}“

来自分类Dev

Angular 6 返回 Observable

来自分类Dev

从ggvis的handle_hover()或handle_click()返回值

来自分类Dev

从HTMLParser handle_starttag返回数据

来自分类Dev

PayPal沙箱IPN验证始终返回INVALID

Related 相关文章

  1. 1

    FindNextFileA返回6(ERROR_INVALID_HANDLE)

  2. 2

    无法关闭带有 ERROR_INVALID_HANDLE 的套接字句柄 (6)

  3. 3

    更改线程优先级ERROR_INVALID_HANDLE

  4. 4

    c#使用SetClipboardData失败,并显示ERROR_INVALID_HANDLE

  5. 5

    EnumProcessModules失败,内部进程中出现ERROR_INVALID_HANDLE

  6. 6

    WSARecv sometimes return "invalid handle (error no 6)" for a socket associated with an IOCP port. (C++)

  7. 7

    WinHttpSendRequest返回ERROR_INVALID_PARAMETER

  8. 8

    ReadMsgQueue返回ERROR_INVALID_PARAMETER

  9. 9

    ReadMsgQueue返回ERROR_INVALID_PARAMETER

  10. 10

    是什么使cuLaunchKernel失败并显示CUDA_ERROR_INVALID_HANDLE?

  11. 11

    ReadFile在第二次调用时返回INVALID_HANDLE

  12. 12

    WIN API ReadFile()返回GetLastError()ERROR_INVALID_PARAMETER

  13. 13

    WIN API ReadFile()返回GetLastError()ERROR_INVALID_PARAMETER

  14. 14

    IDXGIFactory4 :: CreateSwapChain返回DXGI_ERROR_INVALID_CALL

  15. 15

    查询蓝牙设备时,SetupDiEnumDeviceInterfaces返回ERROR_INVALID_PARAMETER

  16. 16

    Windows 读取文件返回 ERROR_INVALID_PARAMETER 87

  17. 17

    VirtualAllocEx 失败 GetError 返回 ERROR_INVALID_ADDRESS

  18. 18

    (WIN32: 1400 ERROR_INVALID_WINDOW_HANDLE) 使用智能卡签署 CSR 时

  19. 19

    HttpQueryServiceConfiguration错误INVALID_HANDLE

  20. 20

    禁用快速编辑模式时,SetConsoleMode返回ERROR_INVALID_PARAMETER

  21. 21

    响应通知POST,供应商系统返回INVALID或ERROR-Sagepay服务器

  22. 22

    带有FSCTL_SET_ZERO_DATA的DeviceIoControl返回ERROR_INVALID_PARAMETER

  23. 23

    Jenkins 2.60.2 在运行 Gradle 任务时返回“CreateProcess error=267, The directory name is invalid”

  24. 24

    Invalid Binary Error

  25. 25

    google服务帐户示例返回“刷新OAuth2令牌时发生错误{“ error”:“ invalid_grant”}“

  26. 26

    Angular 6 返回 Observable

  27. 27

    从ggvis的handle_hover()或handle_click()返回值

  28. 28

    从HTMLParser handle_starttag返回数据

  29. 29

    PayPal沙箱IPN验证始终返回INVALID

热门标签

归档