当前位置: 首页 > article >正文

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返回正值

http://www.lryc.cn/news/2404685.html

相关文章:

  • Java Map完全指南:从基础到高级应用
  • jvm 垃圾收集算法 详解
  • [特殊字符] 深入理解 Linux 内核进程管理:架构、核心函数与调度机制
  • Nginx Stream 层连接数限流实战ngx_stream_limit_conn_module
  • Spring Boot 定时任务的使用
  • Flutter:下拉框选择
  • SpringAI(GA):Nacos2下的分布式MCP
  • AC68U刷梅林384/386版本后不能 降级回380,升降级解决办法
  • [AI绘画]sd学习记录(二)文生图参数进阶
  • CRM管理系统中的客户分类与标签管理技巧:提升转化率的核心策略
  • 怎么解决cesium加载模型太黑,程序崩溃,不显示,位置不对模型太大,Cesium加载gltf/glb模型后变暗
  • 【AI系列】BM25 与向量检索
  • windows10搭建nfs服务器
  • simulink这边重新第二次仿真时,直接UE5崩溃,然后simulink没有响应
  • react 常见的闭包陷阱深入解析
  • 【CATIA的二次开发22】关于抽象对象Document概念详细总结
  • 模拟法解题的思路与算法分享
  • mysql密码正确SpringBoot和Datagrip却连接不上
  • 高保真组件库:数字输入框
  • 人工智能赋能高中学科教学的应用与前景研究
  • 【Linux】awk 命令详解及使用示例:结构化文本数据处理工具
  • 紫光同创FPGA系列实现Aurora 8b/10b协议
  • DAY 44 预训练模型
  • [Harmony]颜色初始化
  • 指针与函数参数传递详解 —— 值传递与地址传递的区别及应用
  • 【NLP中向量化方式】序号化,亚编码,词袋法等
  • C++学习-入门到精通【16】自定义模板的介绍
  • 关于脏读,幻读,可重复读的学习
  • 源码级拆解:如何搭建高并发「数字药店+医保购药」一体化平台?
  • 旅行商问题(TSP)的 C++ 动态规划解法教学攻略