FindFirstChangeNotification监控文件修改

13:06 2013-06-28
FindFirstChangeNotification功能
7出11的评价是有帮助- 为这个主题
创建一个变更通知手柄,并设置初始变更通知过滤条件。等待通知手柄成功符合过滤条件发生变化时,在指定的目录或子树。该功能不报告到指定目录本身的变化。
此功能并不表示满足等待条件的变化。要检索信息通知的具体变化的一部分,使用 的ReadDirectoryChangesW函数。
句法
C + +

HANDLE WINAPI FindFirstChangeNotification(
_In_的LPCTSTR lpPathName,
_In_ BOOL bWatchSubtree
_In_ DWORD dwNotifyFilter
);

参数
lpPathName []
要监视的目录的完整路径。这不可能是一个相对路径或者一个空字符串。
在这个函数的ANSI版本,名称限制MAX_PATH字符。为了延长此限制到32,767宽字符,调用Unicode版本的功能和前面加上“\ \ \”的路径。欲了解更多信息,请参阅“ 命名文件。
bWatchSubtree [中]
如果此参数为TRUE,该功能将监视在指定的目录中的目录树,如果它是假的,只监视指定的目录。
dwNotifyFilter []
满足过滤条件的变化通知等待。这个参数可以是以下值中的一个或多个。
值 意思
FILE_NOTIFY_CHANGE_FILE_NAME
0X00000001
返回目录或子树的原因一个变更通知等??待操作任何文件名变化。变化包括重命名,创建或删除一个文件名。
FILE_NOTIFY_CHANGE_DIR_NAME
0x00000002
目录或子树的原因变更通知等??待操作返回的任何目录名称变更。变化包括创建或删除目录。
FILE_NOTIFY_CHANGE_ATTRIBUTES
0x00000004
返回目录或子树的原因一个变更通知等??待操作任何属性变化。
FILE_NOTIFY_CHANGE_SIZE
0x00000008的
返回目录或子树的原因一个变更通知等??待操作任何文件大小的变化。操作系统检测,只有当文件被写入到磁盘文件大小的变化。对于操作系统,使用大量的缓存,检测时,只有当缓存被充分冲洗。
FILE_NOTIFY_CHANGE_LAST_WRITE
0X00000010
上次写入时的文件,目录或子树的原因变更通知等??待操作返回的任何变化。操作系统检测到最后只有当文件被写入到磁盘的写入时间的变化。对于操作系统,使用大量的缓存,检测时,只有当缓存被充分冲洗。
FILE_NOTIFY_CHANGE_SECURITY
0X00000100
返回目录或子树的原因一个变更通知等??待操作任何安全描述符的变化。

返回值
如果函数调用成功,则返回值是一个句柄找到变更通知对象。
如果函数失败,返回值是INVALID_HANDLE_VALUE。为了得到扩展的错误信息,调用 GetLastError函数。
备注
等待功能可以监控指定目录或子树,使用由FindFirstChangeNotification函数返回的句柄 。一个等待被满足过滤条件之一发生时,在受监视的目录或子树。
已被满足的等待之后,该应用程序可以响应此条件下,并继续监视的目录通过调用 FindNextChangeNotification功能和适当的等待功能。当手柄被不再需要时,它可以关闭通过使用 FindCloseChangeNotification功能。
可能无法通知时返回调用FindFirstChangeNotification的远程文件系统。
符号链接的行为,如果路径指向一个符号链接,通知句柄被创建为目标。
如果一个应用程序目录,其中包含符号链接注册,以接收更改通知,应用程序只通知已经改变符号链接时,目标文件。
在Windows 8和Windows Server 2012中,这个功能是通过以下技术支持。
技术 支持
服务器消息块(SMB)3.0协议

SMB 3.0透明故障转移(TFO)

SMB 3.0与向外扩展(scale-out)文件共享(SO)

群集共享卷文件系统(CsvFS)
见备注
弹性文件系统(文献)

posted @ 2013-07-05 11:30  lcfwzq  阅读(2437)  评论(0编辑  收藏  举报