FindFirstChangeNotification
要监视指定目录中的变化可以使用FindFirstChangeNotification 函数。此函数创建一个改
变通知对象,设置初始的改变通知过滤条件。在指定的目录或子目录下,当一个符合过滤条件
的改变发生时,一个在通知句柄上的等待将会成功(等待函数返回)。
函数原型如下:
HANDLE FindFirstChangeNotification(
LPCTSTR lpPathName, // 指定要监视的目录
BOOL bWatchSubtree, // 指定是否监视lpPathName 目录下的所有子目录
DWORD dwNotifyFilter // 指定过滤条件
);
dwNotifyFilter 参数指定了能够满足改变通知等待(即能够使等待函数返回)的过滤条件,
可以是以下值的组合:
FILE_NOTIFY_CHANGE_FILE_NAME 要求监视文件名称的改变
FILE_NOTIFY_CHANGE_DIR_NAME 要求监视目录名称的改变
FILE_NOTIFY_CHANGE_ATTRIBUTES 要求监视属性的改变
FILE_NOTIFY_CHANGE_SIZE 要求监视文件大小的改变
FILE_NOTIFY_CHANGE_LAST_WRITE 要求监视最后写入时间的改变
FILE_NOTIFY_CHANGE_SECURITY 要求监视安全属性的改变
函数执行成功返回值是改变通知对象句柄,INVALID_HANDLE_VALUE 是失败后的返回
值。返回的句柄可传递给等待函数(如WaitForSingleObject 等)。当监视的目录或子目录中一
个过滤条件满足的时候,等待就会返回。
等待函数返回之后,应用程序可以处理这个改变,并调用FindNextChangeNotification 函
数继续监视目录。当不再使用这个句柄时,应当调用FindCloseChangeNotification 函数关闭它。
这两个函数的惟一参数是FindFirstChangeNotification 函数返回的句柄