查看: 433|回复: 2

[C/C++] C++实现监控指定目录下的文件变更

[复制链接]

4

技术

17

魅力

6

原创

版主

禁止发言

Rank: 7Rank: 7Rank: 7

积分
5367
人气
208
分享
36

最佳新人活跃会员

发表于 2023-1-9 18:02:50 | 显示全部楼层 |阅读模式

开源地址:https://gitcode.net/m0_59988052/watchdog
这个项目的原理:ReadDirectoryChangesW()函数
函数原型:
[C++] 纯文本查看 复制代码
BOOL WINAPI ReadDirectoryChangesW(
  __in          HANDLE hDirectory,//指向监控目录的句柄,可以用CreatFile生成
  __in_out      LPVOID lpBuffer,//存储修改信息的首地址
  __in          DWORD nBufferLength,//分配的存储修改信息的空间的长度
  __in          BOOL bWatchSubtree,//TRUE则监控子目录,FALSE则不监控
  __in          DWORD dwNotifyFilter,//通知条件
  __out         LPDWORD lpBytesReturned,//该函数返回信息的字节数,也就是存到lpBuffer中的内容的字节数
  __in          LPOVERLAPPED lpOverlapped,//一个指向OVERLAPPED结构的指针,他在同步调用时提供数据供使用,否则他就为NULL
  __in          LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine//当操作结束或被取消或者线程进入等待状态时的一个指向将被调用操作的指针
);



功能:监控文件修改,并记录文件修改的相关信息,如修改的文件名,何种类型的修改等。

返回值:如果函数成功,返回值就是非0。对于同步调用,这意味着操作成功,对于异步调用,这意味着操作成功地排队。如果函数失败,返回值是0。如果操作目录或文件系统不支持这个操作,函数将返回ERROR_INVALID_FUNCTION,可以使用GetLastError()函数获取。

注意,FindFirstChangeNotification 和 ReadDirectoryChangesW 是互斥的,不能同时使用。




评分

参与人数 1经验 +30 收起 理由
xiaomeng + 30

查看全部评分

YF工作室驻x64论坛分部
工作室曾开发的软件:YFSafe安全软件,YFChat在线聊天软件,MBRTools等。
欢迎有能力的你加入我们一起共同进步。请发邮件至yfstudio2021@outlook.com

0

技术

9

魅力

1

原创

版主

禁止访问

Rank: 7Rank: 7Rank: 7

积分
7674
人气
176
分享
52

最佳新人活跃会员

发表于 2023-1-9 19:24:33 | 显示全部楼层
WatchDog什么鬼
小菜鸡一枚~
Gitee主页:https://gitee.com/juruoqwq

0

技术

0

魅力

2

原创

初出茅庐

Rank: 2

积分
238
人气
18
分享
2
发表于 2023-1-9 19:44:31 | 显示全部楼层

看门狗。也可以指MCU内的看门狗计时器。就是等待一定事件发生的子程式。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表