设为首页收藏本站

 找回密码
 注册
查看: 828|回复: 0
打印 上一主题 下一主题

Windows提供了对文件和目录监控的系统服务 [复制链接]

Rank: 4

精华
0
UID
1124332
积分
421
帖子
52
主题
29
阅读权限
50
注册时间
2021-5-28
最后登录
2021-7-16
跳转到指定楼层
1#
发表于 2021-6-5 21:32:15 |只看该作者 |倒序浏览
Windows提供了对文件和目录监控的系统服务,并且为应用程序提供了两个API函数,它们分别是:FindFirstChangeNotification和ReadDirectoryChangesW。其中FindFirstChangeNotification函数只能监控到某一目录下有文件发生改变,而不能监控到具体是哪一文件发生改变。ReadDirectoryChangesW 能监控目录下某一文件发生改变。

 利用ReadDirectoryChangesW函数实现对一个目录进行监控的。具体的做法是:首先使用CreateFile获取要监控目录的句柄;然后在一个判断循环里面调用ReadDirectoryChangesW,并且把自己分配的用来存放目录变化通知的内存首地址、内存长度、目录句柄传给该函数。用户代码在该函数的调用中进行同步等待。当目录中有文件发生改变,控制函数把目录变化通知存放在指定的内存区域内,并把发生改变的文件名、文件所在目录和改变通知处理。

该函数定义为:


BOOL WINAPI ReadDirectoryChangesW(

        HANDLE hDirectory,   // 对目录进行监视的句柄
        LPVOID lpBuffer,     // 一个指向DWORD类型的缓冲区,其中可以将获取的数据结果将其返回。
        DWORD nBufferLength, // 指lpBuffer的缓冲区的大小值,以字节为单位。
        BOOL bWatchSubtree, // 监视目录. 一般选择 TRUE
        DWORD dwNotifyFilter, // 对文件过滤的方式和标准
       LPDWORD lpBytesReturned, // 将接收的字节数转入lpBuffer参数
       LPOVERLAPPED lpOverlapped, // 一般选择 NULL
      LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine // 一般选择 NULL

);

李清华
您需要登录后才可以回帖 登录 | 注册

bottom

静态版|手机版|联系我们|交易开拓者 ( 粤ICP备07044698   

GMT+8, 2024-5-5 04:52

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部