将 parms 传递给 FindNextFileA 不起作用?
Passing parms to FindNextFileA doesn't work?
我以为我知道我在用这种技术做什么,但这次我一定在做一些不同的事情。
当我通过传递参数尝试查找下一个文件A时,我收到错误。
// "$FndDirEnt_Sbr_Mod.cpp"
#include <stdio.h>
typedef struct {
char SchPth[MAX_PATH]; // Path of directory to search
char DirFilNamFnd[MAX_PATH]; // Name of directory or file found
bool DirFndInd; // Directory was found indicator
bool NrmBitInd; // Normal bit on indicator
bool ArcBitInd; // Archive bit on indicator
bool HidBitInd; // Hidden bit on indicator
bool RdoBitInd; // Read-only bit on indicator
DWORD LstErr; // Error code if not found
}FndFilInfStc;
bool FndFstDirEnt(HANDLE * FndFilHnd, FndFilInfStc * FndFilInf)
;
bool FndNxtDirEnt(HANDLE FndFilHnd, FndFilInfStc * FndFilInf)
;
#include "$FndDirEnt_Sbr_Pub.h"
#define BitFnd(ChkBit, BitChkFor) ((ChkBit & BitChkFor) == BitChkFor)
void FndDirEnt()
{
HANDLE FndFilHnd;
FndFilInfStc FndFilInf;
bool FndDirErr;
strncpy_s(FndFilInf.SchPth, sizeof(FndFilInf.SchPth), "C:\*.*", strlen("C:\*.*"));
FndDirErr = FndFstDirEnt(&FndFilHnd, &FndFilInf);
if (FndDirErr)
FndDirErr = FndNxtDirEnt(&FndFilHnd, &FndFilInf);
}
bool FndFstDirEnt(HANDLE * FndFilHnd, FndFilInfStc * FndFilInf)
{
LPCSTR lpFileName;
FINDEX_INFO_LEVELS fInfoLevelId = FindExInfoBasic;
LPVOID lpFindFileData;
FINDEX_SEARCH_OPS fSearchOp = FindExSearchNameMatch;
LPVOID lpSearchFilter = NULL;
DWORD dwAdditionalFlags = FIND_FIRST_EX_LARGE_FETCH;
size_t NbrChrCvt = 0;
_WIN32_FIND_DATAA FndFilDta;
*FndFilHnd = INVALID_HANDLE_VALUE;
*FndFilHnd = FindFirstFileExA(FndFilInf->SchPth, fInfoLevelId, &FndFilDta, fSearchOp, lpSearchFilter, dwAdditionalFlags);
if (*FndFilHnd == INVALID_HANDLE_VALUE) {
FndFilInf->LstErr = GetLastError();
printf("Invalid handle for %sn", FndFilInf->SchPth);
return false; // **************** EARLY RETURN ****************
}
else {
printf("%pn", FndFilHnd);
return true;
}
}
bool FndNxtDirEnt(HANDLE FndFilHnd, FndFilInfStc * FndFilInf)
{
_WIN32_FIND_DATAA FndFilDta;
bool FndDirErr;
printf("%p schpth=%sn", FndFilHnd, FndFilInf->SchPth);
FndDirErr = FindNextFileA(FndFilHnd, &FndFilDta); // <-- error here
return FndDirErr;
}
我收到以下错误:
Exception thrown at 0x00007FFB564D9C90 (ntdll.dll)
in $FndDirEnt_Tst.exe: 0xC0000005: Access violation reading location
0xFFFFFFFFFFFFFFFF.
我得到的输出是:
00000033228FF078
00000033228FF078 schpth=C:*.*
我不知道我还能添加什么其他细节,但我在尝试提交问题时不断收到错误,说我的帖子主要是代码。蒂亚。
这里
FndDirErr = FndNxtDirEnt(&FndFilHnd, &FndFilInf);
您正在传递应传递句柄的句柄的地址。
句柄的地址不是有效的句柄。
从 &FndFilHnd
中删除与号。
相关文章:
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 我的神经网络不起作用 [XOR 问题]
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- QSqlquery prepare()和bindvalue()不工作
- 努力将整数转换为链表。不知道我在这里做错了什么
- 整数不会重复超过随机数
- 使用新行和不使用新行读取文件
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 检查输入是否不是整数或数字
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 使用不带参数的函数访问结构元素
- 如果我只是不访问queue_front节点的子节点,而是将它们推到队列中呢?还是BFS吗
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 为什么这个运算符<重载函数对 STL 算法不可见?
- 不带大括号的枚举形式
- Openssl 1.1.1d无效使用不完整的类型"struct dsa_st"
- 将 parms 传递给 FindNextFileA 不起作用?