3 个版本
0.1.2 | 2020年10月3日 |
---|---|
0.1.1 | 2020年8月17日 |
0.1.0 | 2020年8月12日 |
1648 in 文件系统
105KB
1.5K SLoC
ProjFS
有关更多信息,请参阅示例
开始使用
为了获取实例,应创建一个实现 Sync
、ProjFSDirEnum
和 ProjFSRead
的 MyProjFS
结构体。
// create root dir to be projected
std::fs::create_dir("root_dir").ok();
// create a virtualization instance of MyProjFS
// this function returned immediately, and you would like to hold the instance during the projection
let instance = start_proj_virtualization("root_dir", Box::new(MyProjFS::new())).unwrap();
std::thread::sleep(std::time::Duration::from_secs(std::u64::MAX));
// once the instance dropped, the projection stopped
drop(instance)
功能
有关 Microsoft 指南,请参阅此处。现在我们可以提供回调函数
-
PRJ_CANCEL_COMMAND_CB
-
PRJ_END_DIRECTORY_ENUMERATION_CB
-
PRJ_GET_DIRECTORY_ENUMERATION_CB
-
PRJ_GET_FILE_DATA_CB
(通过ProjFSRead::read
) -
PRJ_GET_PLACEHOLDER_INFO_CB
(通过ProjFSRead::get_metadata
) -
PRJ_NOTIFICATION_CB
-
PRJ_QUERY_FILE_NAME_CB
-
PRJ_START_DIRECTORY_ENUMERATION_CB
回调系列 PRJ_*_DIRECTORY_ENUMERATION_CB
将由 ProjFSDirEnum::dir_iter
和 ProjFSDirEnum::dir_iter_cache
生成。
注意
请确保您的计算机上已启用 Projected File System
Enable-WindowsOptionalFeature -Online -FeatureName Client-ProjFS -NoRestart
依赖关系
~1.5MB
~27K SLoC