当有大量文件活动时,互联网上有很多关于ReadDirectoryChangesW API函数丢失文件的帖子.大多数人都指责调用ReadDirectoryChangesW函数循环的速度.这是一个不正确的假设.我看到的最好的解释是在下面的帖子,评论于2008年4月14日星期一下午2:15:27
http://social.msdn.microsoft.com/forums/en-US/netfxbcl/thread/4465cafb-f4ed-434f-89d8-c85ced6ffaa8/
摘要是ReadDirectoryChangesW函数报告文件更改,因为它们离开文件后写队列,而不是添加它们.如果在提交之前添加了太多,则会忽略其中一些.如果您只是编写一个程序来快速生成目录中的1000多个文件,您可以通过实现看到这一点.只需计算您获得的文件事件通知数量,您就会看到有时您不会收到所有这些通知.
问题是,有没有人找到一种可靠的方法来使用ReadDirectoryChangesW函数而不必每次都刷新卷?如果用户不是管理员并且还可能需要一些时间来完成,则不允许这样做.