积极答复者
Windows server 2008 使用findfirsfile访问共享文件返回失败或延迟

问题
答案
-
你好:
我在控制台应用上测试了下FindFirstFile这个函数,没有发现这个函数会发生GetlastError为3问题。下面是我的测试代码:
#include "stdafx.h" #include <windows.h> #include <tchar.h> #include <stdio.h> void _tmain(int argc, TCHAR *argv[]) { WIN32_FIND_DATA FindFileData; HANDLE hFind; for (int i = 0; i < 1000; i++) { hFind = FindFirstFile(TEXT("D:\\test.txt"), &FindFileData); if (hFind == INVALID_HANDLE_VALUE) { printf ("FindFirstFile failed (%d)\n", GetLastError()); break; } else { _tprintf (TEXT("The first file found is %s,%d\n"), FindFileData.cFileName,i); FindClose(hFind); } } getchar(); }
测试结果截图如下:
虽然只是在本地磁盘的测试,但是基本可以排除错误原因出现在该函数上了。那么,我们就需要检查下面两点:
1.该文件设置了共享访问权限,你可以去检查一下手动查找是否可以次次成功。
2.延迟只会出现在server访问上,如果是这种情况导致的查询失败,我建议你到windows server去寻找相关的帮助。
- 已标记为答案 Anna CcModerator 2014年5月25日 15:47
全部回复
-
你好:
我在控制台应用上测试了下FindFirstFile这个函数,没有发现这个函数会发生GetlastError为3问题。下面是我的测试代码:
#include "stdafx.h" #include <windows.h> #include <tchar.h> #include <stdio.h> void _tmain(int argc, TCHAR *argv[]) { WIN32_FIND_DATA FindFileData; HANDLE hFind; for (int i = 0; i < 1000; i++) { hFind = FindFirstFile(TEXT("D:\\test.txt"), &FindFileData); if (hFind == INVALID_HANDLE_VALUE) { printf ("FindFirstFile failed (%d)\n", GetLastError()); break; } else { _tprintf (TEXT("The first file found is %s,%d\n"), FindFileData.cFileName,i); FindClose(hFind); } } getchar(); }
测试结果截图如下:
虽然只是在本地磁盘的测试,但是基本可以排除错误原因出现在该函数上了。那么,我们就需要检查下面两点:
1.该文件设置了共享访问权限,你可以去检查一下手动查找是否可以次次成功。
2.延迟只会出现在server访问上,如果是这种情况导致的查询失败,我建议你到windows server去寻找相关的帮助。
- 已标记为答案 Anna CcModerator 2014年5月25日 15:47