DLL动态库实现文件遍历功能(Windows编程)
源文件: 文件遍历功能的动态库,并支持用户注册回调函数处理遍历到的文件 · a8f80ba · 周不才/cpp_linux study - Gitee.com
知识准备
1.Windows中的数据类型
2.DLL导出/导入宏
使用__declspec(dllexport)修饰函数,将函数标记为导出函数存放到导出表中,目的是当其他程序使用该动态库时,就可以通过导出表来使用这些函数(DLL项目本身)
使用__declspec(dllimport)修饰函数,将函数标记为导入函数,目的是当其他程序使用该动态库时,编译器能通过标记知道哪些是由DLL外部导入的函数,从而生成适当的代码来链接这些函数(其他使用DLL动态库的程序)
3.OutputDebugStringW()函数
void WINAPI OutputDebugStringW(_In_opt_ LPCWSTR lpOutputString // 要输出的宽字符串
);
功能:向调试器输出调试信息
4.FindFirstFileW()函数
HANDLE FindFirstFileW([in] LPCWSTR lpFileName, // 搜索模式(路径+通配符)[out] LPWIN32_FIND_DATAW lpFindFileData // 接收文件信息的结构
);
功能:搜索指定路径下的文件
输出:成功返回搜索句柄,用于后续的FindNextFileW函数或FindClose函数,并在lpFindFileData存储搜索到的文件信息;失败返回INVALID_HANDLE_VALUE
5.WIN32_FIND_DATAW
typedef struct _WIN32_FIND_DATAW {DWORD dwFileAttributes; // 文件属性FILETIME ftCreationTime; // 创建时间FILETIME ftLastAccessTime; // 最后访问时间FILETIME ftLastWriteTime; // 最后修改时间DWORD nFileSizeHigh; // 文件大小的高32位DWORD nFileSizeLow; // 文件大小的低32位DWORD dwReserved0; // 保留字段DWORD dwReserved1; // 保留字段WCHAR cFileName[MAX_PATH]; // 文件名(长文件名)WCHAR cAlternateFileName[14];// 8.3格式的短文件名
} WIN32_FIND_DATAW, *PWIN32_FIND_DATAW, *LPWIN32_FIND_DATAW;
WIN32_FIND_DATAW是用于接收FindFirstFileW函数和FindNextFileW函数搜索到的文件信息的数据结构
6.wcscmp()函数
int wcscmp(const wchar_t* ws1, const wchar_t* ws2);
功能:比较两个宽字符串
输出:ws1小于ws2返回负值;ws1等于ws2返回0;ws1大于ws2返回正值