API函数ReadDirectoryChangesW 监视目录

转载 2012年03月22日 11:25:38
API函数ReadDirectoryChangesW 监视目录
2011-02-15 7:42

对指定的一个目录进行监控,当该目录中有文件发生改变,并通知处理。 Windows提供了对文件和目录监控的系统服务,并且为应用程序提供了两个API函数,它们分别是:FindFirstChangeNotification和ReadDirectoryChangesW。由于通过FindFirstChangeNotification函数只能监控到某一目录下有文件发生改变,而不能监控到具体是哪一文件发生改变,所以本人选用ReadDirectoryChangesW函数。该函数的定义为:

第一个参数是要监控目录的句柄,可以通过指定目录名,利用CreateFile函数的返回值获得。用户代码通过第二个和第三个参数来告知操作系统该把目录变化通知放在首地址为返回信息指针, 一块内存长度区域当中的。但是该内存又是怎样组织的呢?操作系统是把他们放在FILE_NOTIFY_INFORMATION这个结构里面的: 

这是一个自定义结构,第一个字段存储了要获得下一个记录需要跳过多少字节数,如果它的值为0,就表示本记录已经是最后一条记录了。该字段其实也可以看作是一个指向下一条记录的指针。第二个字段的含义是:本次通知了哪种类型的目录变化。第三个字段表示的是变化的文件名称的长度。第四个字段是一个存放变化的文件名称的Unicode字符数组的首地址。

  另外一个与本系统有关的参数是类型过滤器。它是目录变化通知过滤器。要监控文件名发生变化,此参数应设为FILE_NOTIFY_CHANGE_FILE_NAME;文件被非法改写为FILE_NOTIFY_CHANGE_LAST_WRITE等等。根据过滤器的设置,ReadDirectoryChangesW函数可以监控文件名改变、文件属性改变、文件大小改变、文件内容被改写、文件被删除等多种类型的变化。

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

利用此API写的文件目录事件监视器:

举报

相关文章推荐

API函数ReadDirectoryChangesW 监视目录

对指定的一个目录进行监控,当该目录中有文件发生改变,并通知处理。 Windows提供了对文件和目录监控的系统服务,并且为应用程序提供了两个API函数,它们分别是:FindFirstChangeNoti...

API函数ReadDirectoryChangesW 监视目录

http://hi.baidu.com/jiahaosoft/blog/item/b441d1218eebece0d6cae274.html API函数ReadDirectoryChangesW...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

windows下调用WINAPI函数ReadDirectoryChangesW监控目录

windows下调用WINAPI函数ReadDirectoryChangesW监控目录

监控目录文件变化的ReadDirectoryChangesW 函数学习总结

客户端监控被监控目录(含所有子目录)下的变化,我们可以采用ReadDirectoryChangesW 函数 ,该函数实现对指定的目录进行监控,并且返回详细的文件变化信息。 函数原型: BOOL W...

关于Win32 API 函数 ReadDirectoryChangesW(CDirectoryChangeWatcher by Wes Jones)的使用

主题:关于Win32 API 函数ReadDirectoryChangesW的使用 说明:Wes Jones在codeproject上把这个API函数已经打包封装好了,取名为CDirectoryCh...

浅谈ReadDirectoryChangesW函数的作用和问题所在

这两天又研究了一下ReadDirectoryChangesW函数,下面大致的将研究所得的一些心得体会拿出来和大家分享一下。   首先这个函数的作用,主要是用于监控某个目录下文件或目录的改动事件。那么...

windows下文件的监控--ReadDirectoryChangesW函数的使用

最近在做一个项目,其中涉及到监控指定目录下所有文件和子目录内的修改信息。经过一番努力,总算实现这一功能,在此特别感谢那些帮助过我的朋友和同事们。今天整理一下这几天的收获,列出相关的知识点,供后来者参考...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)