六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 42|回复: 0

[C++]监控特定文件夹的事件:三种解决方法汇总

[复制链接]

升级  0.95%

325

主题

325

主题

325

主题

探花

Rank: 6Rank: 6

积分
1019
 楼主| 发表于 2013-1-26 14:39:24 | 显示全部楼层 |阅读模式
<iframe align="top" marginwidth="0" marginheight="0" src="http://www.zealware.com/csdnblog01.html" frameborder="0" width="728" scrolling="no" height="90"></iframe><div class="postText">监控特定文件夹的事件:三种解决方法汇总<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />




LDBIVR程序中要监视特定文件夹的文件落地或者删除事件,本来要用SHELL中的事件通知机制,后来因为要考虑到各种意外事件,如服务意外退出、服务器崩溃等,遂作罢。

对于目录事件异步通知,大致有三个方法:

调用Windows的api函数ReadDirectoryChanges监视指定目录中文件(推荐使用),这个使用异步IO:


The ReadDirectoryChangesW function retrieves information that describes the changes within a directory.

To track changes on a volume, see change journals.

BOOL ReadDirectoryChangesW(

HANDLE hDirectory,

LPVOID lpBuffer,

DWORD nBufferLength,

BOOL bWatchSubtree,

DWORD dwNotifyFilter,

LPDWORD lpBytesReturned,

LPOVERLAPPED lpOverlapped,

LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine

);





或者用SHChangeNotifyRegister和SHChangeNotifyDeregister来注册事件SHChangeNotify:




SHChangeNotify Function

<div style="margin: 0cm 0cm 0pt; text-align: center;" class="MsoNormal">
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

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