DLL动态库实现文件遍历功能(Windows编程)

源文件: 文件遍历功能的动态库,并支持用户注册回调函数处理遍历到的文件 · a8f80ba · 周不才/cpp_linux study - Gitee.com

知识准备

1.Windows中的数据类型
2.DLL导出/导入宏

使用__declspec(dllexport)修饰函数,将函数标记为导出函数存放到导出表中,目的是当其他程序使用该动态库时,就可以通过导出表来使用这些函数(DLL项目本身)

使用__declspec(dllimport)修饰函数,将函数标记为导入函数,目的是当其他程序使用该动态库时,编译器能通过标记知道哪些是由DLL外部导入的函数,从而生成适当的代码来链接这些函数(其他使用DLL动态库的程序)

3.OutputDebugStringW()函数
cpp 复制代码
void WINAPI OutputDebugStringW(
  _In_opt_ LPCWSTR lpOutputString  // 要输出的宽字符串
);

功能:向调试器输出调试信息

4.FindFirstFileW()函数
cpp 复制代码
HANDLE FindFirstFileW(
  [in]  LPCWSTR            lpFileName,        // 搜索模式(路径+通配符)
  [out] LPWIN32_FIND_DATAW lpFindFileData     // 接收文件信息的结构
);

功能:搜索指定路径下的文件

输出:成功返回搜索句柄,用于后续的FindNextFileW函数或FindClose函数,并在lpFindFileData存储搜索到的文件信息;失败返回INVALID_HANDLE_VALUE

5.WIN32_FIND_DATAW
cpp 复制代码
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()函数
cpp 复制代码
int wcscmp(const wchar_t* ws1, const wchar_t* ws2);

功能:比较两个宽字符串

输出:ws1小于ws2返回负值;ws1等于ws2返回0;ws1大于ws2返回正值

相关推荐
qq_3692243316 天前
Windows全系通用!ntdll.dll文件丢失、报错、闪退问题的完整排查与修复教程
windows·dll·dll修复·dll丢失·dll错误
阿米亚波16 天前
【Windows】QEMU 启动 openEuler aarch64/arm64 架构系统 + 离线软件源
linux·windows·经验分享·笔记·架构·arm
caimouse16 天前
Reactos 第 10 章 网络操作 — 10.3.1 NIC驱动
网络·windows
初圣魔门首席弟子16 天前
Node.js 详细介绍(知识库版)
windows·qt·node.js·知识库
CHENG-JustDoIt16 天前
AI工具 | 爆火开源项目Odysseus AI 工作台:从项目介绍、部署情况及其使用等多方位分析指南(含详细步骤)
大数据·人工智能·windows·python·ai·开源·github
kingbal16 天前
Windows:flutter环境搭建
windows·flutter
未若君雅裁16 天前
Python 数据容器详解,list、tuple、str、set、dict 到底怎么选
windows·python·list
CodeKwang16 天前
Windows 环境 OCCT 8.0 编译构建及与 Qt6 项目集成
windows·qt·opencascade
我是伪码农16 天前
小兔鲜1-25
linux·服务器·windows
vx-Biye_Design16 天前
springboot安阳地区研学旅游服务小程序-计算机毕业设计源码12785
java·vue.js·windows·spring boot·tomcat·maven·mybatis