登录
首页 » Windows开发 » 文件修改监控

文件修改监控

于 2022-03-10 发布 文件大小:1.08 kB
0 73
下载积分: 2 下载次数: 1

代码说明:

ReadDirectoryChangesW 有同步和异步2种方式, 根据前面打开的文件夹对象句柄决定。  1. 异步方式,如果 CreateFile 指定了打开类型 FILE_FLAG_OVERLAPPED 就是异步方式,ReadDirectoryChangesW 调用的时候就需要指定 OVERLAPPED 参数.  接下来对文件夹I/O变化的响应判断有多种方式。  A通过不断的调用HasOverlappedIoCompleted函数(非阻塞,参数就是前面的OVERLAPPED 对象指针)的返回值来判断是否发生了 关注文件句柄的I/O操作。如果发生变化,再执行你的 switch(Buffer[0].Action) 操作过程。  B GetOverlappedResult 读取 OVERLAPPED 对象的结果。(阻塞)  C 完成端口 GetQueuedCompletionStatus (阻塞)。  其中阻塞方式,必须采用多线程的方式,否则你的主线程被阻塞的话,对话框就动不了了。非阻塞方式也可用多线程,结合hEvent对象来使用。  2.同步方式,如果CreateFile不指定FILE_FLAG_OVERLAPPED ,就是同步方式。  同步方式操作比较简单。lz的程序看来就是使用的同步方式。  在同步下,ReadDirectoryChangesW 将被阻塞,直到一个文件夹句柄的I/O操作到来,然后才能判断。所以lz的程序会死掉。  同步方式必须采用多线程,再创建一个线程,线程函数采用如下方式:  UINT ThreadProc(PVOID)  {     CreateFile();     while(1) // 如果只想监视一次文件的I/O变化,可不用while循环。     {   

下载说明:请别用迅雷下载,失败请重下,重下不扣分!

发表评论

0 个回复

  • 696518资源总数
  • 104269会员总数
  • 31今日下载