DWORD fun_ScanFileSize(const wchar_t *pwchar_param_LogFile)
{
wchar_t wchar_TempFilePath[MAX_PATH] = {'\0'}; //垃圾文件路径缓冲区
wchar_t wchar_ReadBuffer = L'\0'; //逐个字符读取缓冲区
DWORD dword_NumberOfBytesToRead = 0; //读取字节计数
DWORD dword_ReadNumber = 0; //用于遍历垃圾文件路径缓冲区数组
DWORD g_dword_FileSize = 0; //已扫描的垃圾文件容量
WIN32_FIND_DATA struct_Find; //枚举文件时需要的数据结构体
HANDLE handle_File = CreateFile(pwchar_param_LogFile,
FILE_ALL_ACCESS,
FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);
if(handle_File == INVALID_HANDLE_VALUE)
{
//读取失败则返回
return false;
}
while(ReadFile(handle_File,
&wchar_ReadBuffer,
2,
&dword_NumberOfBytesToRead,
NULL))
{
if(dword_NumberOfBytesToRead == 0)
{
//检测到文件结尾
CloseHandle(handle_File);
return g_dword_FileSize;
}
if((wchar_ReadBuffer == L'\r') || (wchar_ReadBuffer == L' ') || (wchar_ReadBuffer == L'\t'))
{
continue;
}
else if(wchar_ReadBuffer == L'\n')
{
//读取'\n'后在路径缓冲区最后一个字节添加字符串结束符
wchar_TempFilePath[dword_ReadNumber] = L'\0';
HANDLE handle_File_Size = CreateFile(wchar_TempFilePath,
FILE_ALL_ACCESS,
FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);
DWORD dword_ErrorCode = GetLastError();
wprintf_s(L"%d", dword_ErrorCode);
g_dword_FileSize += GetFileSize(handle_File_Size,NULL)/8192;
dword_ReadNumber = 0;//重置遍历路径缓冲区数组计数器
}
else
{
//读取正常字符则拷贝到路径缓冲区里
wchar_TempFilePath[dword_ReadNumber] = wchar_ReadBuffer;
dword_ReadNumber++;
}
}
return 0;
}
9 个解决方案
#1
在函数刚进入时加断点,检查输入参数pwchar_param_LogFile的内容。
#2
是下面的那个CreatFile()函数,上面的是正常的,下面的第一个参数是字符串数组,数组内容是从文件中读取来的,内容也是路径没有错,可CreatFile()就是报错
#3
哪位大虾能给小弟解惑呢,已经调试12个小时了都没解决
#4
这种函数一般还是路径错误了,或者你没有权限写。
路径中的"\",是不是要用双\\
#5
路径是没有错的,因为这是字符串数组,所以没必要用\\,而且我也测试过了,还是出错
我读取不是要写,而且我把第二个参数改成GENERIC_READ,还是一样的结果
最后我连函数换成FindFirstFile()还是出错,就是不能解析字符串中的路径
#6
就没有人说吗?
#7
CreateFile 要看是否Unicode ,不匹配会出错
这个函数实际是个宏定义为 CreateFileA,CreateFileW 中的一个。
这个函数实际是个宏定义为 CreateFileA,CreateFileW 中的一个。
#8
不知道楼主的问题解决了没有 在下也碰到了同样的问题 如果楼主的问题已解决,希望也能帮我一下 谢谢
#9
楼主问题解决了吗,我的也是_wfopen打开文件出这个错。解决了可以说一下吗
#1
在函数刚进入时加断点,检查输入参数pwchar_param_LogFile的内容。
#2
在函数刚进入时加断点,检查输入参数pwchar_param_LogFile的内容。
是下面的那个CreatFile()函数,上面的是正常的,下面的第一个参数是字符串数组,数组内容是从文件中读取来的,内容也是路径没有错,可CreatFile()就是报错
#3
哪位大虾能给小弟解惑呢,已经调试12个小时了都没解决
#4
哪位大虾能给小弟解惑呢,已经调试12个小时了都没解决
这种函数一般还是路径错误了,或者你没有权限写。
路径中的"\",是不是要用双\\
#5
哪位大虾能给小弟解惑呢,已经调试12个小时了都没解决
这种函数一般还是路径错误了,或者你没有权限写。
路径中的"\",是不是要用双\\
路径是没有错的,因为这是字符串数组,所以没必要用\\,而且我也测试过了,还是出错
我读取不是要写,而且我把第二个参数改成GENERIC_READ,还是一样的结果
最后我连函数换成FindFirstFile()还是出错,就是不能解析字符串中的路径
#6
就没有人说吗?
#7
CreateFile 要看是否Unicode ,不匹配会出错
这个函数实际是个宏定义为 CreateFileA,CreateFileW 中的一个。
这个函数实际是个宏定义为 CreateFileA,CreateFileW 中的一个。
#8
不知道楼主的问题解决了没有 在下也碰到了同样的问题 如果楼主的问题已解决,希望也能帮我一下 谢谢
#9
楼主问题解决了吗,我的也是_wfopen打开文件出这个错。解决了可以说一下吗