代码之家  ›  专栏  ›  技术社区  ›  Paweł Hajdan

如何调试FindFirstChangeNotification获得的文件更改通知?

  •  1
  • Paweł Hajdan  · 技术社区  · 16 年前

    所以,问题是:我收到了一些我不想收到的通知。但我不知道我是为了什么文件/目录得到它们的。有没有办法知道发出通知的原因?

    如果您考虑ReadDirectoryChangesW,请包含一个有意义的代码示例。

    3 回复  |  直到 16 年前
        1
  •  2
  •   kgriffs    16 年前

    如果希望Windows告诉您更改了哪些特定文件或子目录,则需要使用 ReadDirectoryChangesW . 如果使用完成例程,异步模式相当简单。

    另一方面,通过使用稍微复杂一点的 I/O completion ports 方法我建议下载韦斯·琼斯的优秀作品 CDirectoryChangeWatcher FILE_NOTIFY_INFORMATION 记录。

        2
  •  0
  •   INS    16 年前

    ~伪代码

    HANDLE handles[MAX_HANDLES];
    std::string dir_array[MAX_HANDLES];
    
    for i from 0 to MAX_HANDLES:
       h[i] = FindFirstChangeNotification(dir_array[i]...);
    
    nCount = MAX_HANDLES;
    ret = WaitForMultipleObjects(handles, nCount ...);
    
    // check if ret returns something between WAIT_OBJECT_0 and WAIT_OBJECT_0+nCount-1
    if "so":
      ret -= WAIT_OBJECT_0;
      cout << "Directory " << dir_array[ret] << " changed" << endl;
    

    http://msdn.microsoft.com/en-us/library/ms687025(VS.85).aspx

        3
  •  0
  •   azer azer    16 年前

    请参阅关于专业Win32 api新闻组的信息news://comp.os.ms-windows.programmer.win32 对于知名MS样品(C代码)(自90年代以来…)