3 个版本

0.1.2 2020年10月3日
0.1.1 2020年8月17日
0.1.0 2020年8月12日

1648 in 文件系统

MIT 许可证

105KB
1.5K SLoC

ProjFS

Chrono on crates.io Chrono on docs.rs

有关更多信息,请参阅示例

开始使用

为了获取实例,应创建一个实现 SyncProjFSDirEnumProjFSReadMyProjFS 结构体。

// 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_iterProjFSDirEnum::dir_iter_cache 生成。

注意

请确保您的计算机上已启用 Projected File System

Enable-WindowsOptionalFeature -Online -FeatureName Client-ProjFS -NoRestart

依赖关系

~1.5MB
~27K SLoC