首页 > 解决方案 > 使用 CreateFile() 将文件添加到 Onedrive

问题描述

我正在使用一些在文档上创建锁定文件的软件,以在文档位于网络驱动器上时管理文档的并发编辑。这一切都正常工作。该文件的创建(例如)如下:

HANDLE fh = CreateFile(myFileName, GENERIC_WRITE | GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);

其中 myFileName 是要创建的文件的路径。

但是,如果文档位于 OneDrive 上,则新创建的锁定文件不会同步到此共享存储。创建者可以看到它,但没有其他人可以访问驱动器,直到文件句柄关闭。

出于兴趣,我只使用 GENERIC_READ 和 FILE_SHARE_READ 运行 CreateFile()(即:没有写入参数),并且文件被创建并立即同步。

有人知道这是否是设计使然吗?即:如果一个进程对文件有一个打开的句柄并且具有写访问权限,那么 OneDrive 根本不会同步,并且没有办法解决这个问题。

标签: c++windowsvisual-c++onedrive

解决方案


推荐阅读