如何解决如何自动对“云”文件 (OneDrive) 进行无、部分和完全水合以进行测试?
我想测试一些软件,并想让它在云文件方面表现得很好。为了查看遍历文件夹层次结构时返回的信息,引入了 RtlIsPartialPlaceholder
和 RtlIsCloudFilesPlaceholder
等参考函数。上面的链接指向内核模式文档,但这些函数也存在于用户模式(ntdll.dll)中,并且它们的实现非常简单。
但是,为了测试所述软件,我必须能够以某种方式创建 OneDrive 上文件的占位符可以处于的状态。
我可以使用哪些函数(注册的 COM 类也可以)来自动创建可重现的测试设置,我可以使用它:
- 创建占位符
- 仅部分补水占位符
- 对目录和文件实现相同的
PS:this question 是唯一一个远程连接到该主题的主题,我可以在 SO 上找到该主题。
解决方法
标准文件/目录操作(创建/读取/写入等)可以使用 Win32 API 透明地实现。这就是这项技术的全部意义所在。
因此,您可以使用标准 Win32 API 创建占位符。
如果您在“同步根”(如 OneDrive 案例中的 OneDrive 文件夹层次结构中)创建文件或目录,关联的同步引擎进程(如 OneDrive.exe)将确保该文件或目录是占位符。而且你不能在同步根层次结构之外创建占位符,AFAIK。
对于一个文件(不能对目录进行水化或脱水),读/写对应于水化。请注意,即使最终用户 API(应用程序)只请求了一些字节,一些同步引擎(和/或取决于它们的配置)可以决定始终完全水合文件。
虽然有一些特定的 Win32 API 用于特殊操作。
您可以使用 CfDehydratePlaceholder 脱水文件。您可以对文件 CfHydratePlaceholder 进行水合。对于所有 Cloud Filter API,在创建目录句柄时,不要忘记使用 FILE_FLAG_BACKUP_SEMANTICS 标志。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。