前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >ProjFS新手开发总结

ProjFS新手开发总结

作者头像
用户1260683
发布于 2023-03-08 12:31:59
发布于 2023-03-08 12:31:59
1.1K0
举报

ProjFS新手开发总结

官方描述: Windows Projected File System (ProjFS) 允许名为“provider”的用户模式应用程序将备份数据存储中的分层数据投影到文件系统中,使其显示为文件系统中的文件和目录。例如,简单的提供程序可以将Windows注册表投影到文件系统中,使注册表项和值分别显示为文件和目录。更复杂的提供程序示例是用于虚拟化非常大的git存储库的VFS for Git。

构架原理

  1. 构架&原理:通过在原生的NTFS之上抽象出一套Callback机制,实现用户层面的数据一致性管理
  2. 适用范围:仅对virtualizationRootDir作为根目录以及其下的子目录有效,NormalDir普通目录不在控制范围内。
  3. 应用场景&局限性:主要用于VFS层面已有文件的读取、修改、删除、目录遍历等跟踪与控制,对于新建文件只能通过Notification来跟踪状态。
  4. 性能表现:从实际测得的数据来看,在SSD磁盘中,开启ProjFS会额外增加最少50%的性能开销(主要是延迟增加)

运行机制&流程

关键数据结构

六大关键状态

获取状态PrjGetOnDiskFileState函数,目前该函数存在部分目录or文件查询不到状态的情况。

开发必读

  • 官方文档:https://learn.microsoft.com/en-us/windows/win32/projfs/projfs-programming-guide
  • 官方C#用例:https://github.com/microsoft/ProjFS-Managed-API/tree/main/simpleProviderManaged
  • 官方最佳实践C#: https://github.com/microsoft/VFSForGit
  • C++精简用例:https://git-sa.nie.netease.com/gajira/projfscpp
  • 官方C++用例:https://github.com/microsoft/Windows-classic-samples/tree/main/Samples/ProjectedFileSystem

其他

  • 第三方C#库:https://github.com/dahall/Vanara/blob/master/PInvoke/ProjectedFSLib/readme.md
  • 第三方c#库用例:https://github.com/dahall/WinClassicSamplesCS/tree/master/ProjectedFileSystem
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-12-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Ceph对象存储方案 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
使用SemanticKernel 进行智能应用开发(2023-10更新)
以OpenAI 的ChatGPT 所掀起的GenAI 快速创新浪潮,其中连接LLM 和 应用之间的桥梁的两大开源项目:LangChain[1]和Semantic Kernel[2] ,在半年前写过一篇文章 LangChain vs Semantic Kernel [3],这半年以来Semantic kernel 有了显着改进,这篇文章反应了最新的更新。
张善友
2023/10/03
1.4K0
使用SemanticKernel 进行智能应用开发(2023-10更新)
.NET 7 AOT 的使用以及 .NET 与 Go 互相调用
最近时总更新太快了,太卷了,所以借着 .NET 7 正式版发布,熬夜写完这篇文章,希望能够追上时总的一点距离。
痴者工良
2022/11/23
2.5K0
.NET 7 AOT 的使用以及 .NET 与 Go 互相调用
微软官方发布的C#开源、免费、实用的Windows工具箱
今天分享一款由微软官方发布的C#开源、免费、实用的Windows工具箱(帮助用户调整和简化Windows系统的体验,从而提高工作效率):Microsoft PowerToys。
追逐时光者
2023/12/21
3410
微软官方发布的C#开源、免费、实用的Windows工具箱
桌面应用开发总结
基于QT开发的一些软件举例: WPS Office、海康的视频客户端、VirtualBox(虚拟机软件)、VLC多媒体播放器、YY语音、咪咕音乐.............
DS小龙哥
2022/01/17
3.3K0
桌面应用开发总结
.NET Aspire 正式发布:简化 .NET 云原生开发
.NET团队北京时间2024年5月22日已正式发布.NET Aspire ,在博客文章里做了详细的介绍:.NET Aspire 正式发布:简化 .NET 云原生开发 - .NET 博客 (microsoft.com)[1]。.NET Aspire 是一个新的平台无关、语言无关的框架,旨在简化.NET云原生服务的开发,同时支持Java,PHP,Python,Nodejs等应用的云原生框架。您可以在Visual Studio 2022 17.10、.NET CLI或Visual Studio Code中开始使用.NET Aspire。它汇集了工具、模板和NuGet包,帮助您更容易地使用.NET构建分布式应用程序。无论您是构建新应用程序、向现有应用程序添加云原生功能,还是已经将.NET应用程序部署到云生产环境,.NET Aspire都能帮助您更快地实现目标 。
张善友
2024/05/23
1.4K0
.NET Aspire 正式发布:简化 .NET 云原生开发
AI全栈大模型工程师(十九)Semantic Kernel
当下,LangChain 更强。但 Semantic Kernel 可能更有未来,因为:
Maynor
2023/11/09
7310
AI全栈大模型工程师(十九)Semantic Kernel
.NET周报 【5月第4期 2023-05-27】
https://www.cnblogs.com/gmmy/p/17430613.html
InCerry
2023/08/31
2460
.NET周报 【5月第4期 2023-05-27】
C#/.NET/.NET Core学习路线集合,学习不迷路!
C#、.NET、.NET Core、WPF、WinForm、Unity等相关技术的学习、工作路线集合(持续更新)!!!
追逐时光者
2024/10/19
2950
C#/.NET/.NET Core学习路线集合,学习不迷路!
代码托管从业者 Git 指南
六七年前,我机缘巧合进入了代码托管行业,做过基于 Git 支持 SVN 客户端接入、Git 代码托管平台分布式、Git 代码托管读写分离、Git 代码托管高可用等工作,所幸学到了一些知识,积累了一些经验,本次分享我的一点经验之谈,希望对即将进入或者已在代码托管行业的朋友有所帮助。
腾讯云 CODING
2021/01/26
1.3K0
代码托管从业者 Git 指南
About Windows 10 SDK Preview Build 17110
在 Windows Developer Day 活动同时,微软正式 Release 了 Windows 10 SDK Preview Build 17110。 Windows 10 SDK Preview Build 17110 在 UI 设计,游戏,应用开发,应用发布和盈利等方向都有很多更新,下面我们在每个方向找出一些重点更新来详细看一下。 UI 设计 Adaptive and interactive toast notifications Micrsoft Doc: Toast content  自适应
Shao Meng
2018/04/28
1.7K0
About Windows 10 SDK Preview Build 17110
Blazor资源大全,很棒的Blazor(1)
Blazor允许您使用C#而不是JavaScript构建交互式Web用户界面。Blazor应用程序由使用C#、HTML和CSS实现的可重用的Web用户界面组件组成。客户端和服务器代码都是用C#编写的,允许您共享代码和库。 更多信息请参阅官方Blazor网站[22]。
用户10786849
2023/10/13
7650
Blazor资源大全,很棒的Blazor(1)
Nidhogg:一款专为红队设计的多功能Rootkit
Nidhogg是一款专为红队设计的多功能Rootkit,该工具的主要目的是为红队研究人员提供一个多合一的切易于使用的多功能Rootkit,并允许研究人员通过单个头文件来将其引入到自己的C2框架之中。
FB客服
2023/08/08
4360
Nidhogg:一款专为红队设计的多功能Rootkit
技术速递|.NET 9简介
今天,我们非常激动地宣布 .NET 9的发布,这是迄今为止最高效、最现代、最安全、最智能、性能最高的 .NET 版本。这是来自世界各地数千名开发人员又一年努力的成果。这个新版本包括数千项性能、安全和功能方面的改进。您会发现在整个 .NET 堆栈(编程语言、开发者工具和工作负载)都有了全面的增强,这使您能够使用统一平台进行构建并轻松地将 AI 融入您的应用程序。
郑子铭
2024/12/06
2520
技术速递|.NET 9简介
如何使用ScheduleRunner在红队活动中实现持久化和横县移动计划任务
通过“计划任务”来实现渗透测试是过去十年中最流行的技术之一,而且该技术也是目前网络安全研究人员在实现持久化和横向移动时说普遍使用的。
FB客服
2022/06/08
1.2K0
如何使用ScheduleRunner在红队活动中实现持久化和横县移动计划任务
C#/.NET/.NET Core优秀项目和框架精选(23年10月更新,欢迎大家踊跃提交PR一起完善让优秀的项目和框架不被埋没)
帮助开发者发现功能强大、性能优越、创新前沿、简单易用的C#/.NET/.NET Core优秀项目和框架,无论你是寻找灵感、学习新技术、改进代码质量,还是想拓展自己的技术视野,都能为你提供有价值的参考和指导。关注优秀项目和框架精选能让你及时了解C#、.NET和.NET Core领域的最新动态和最佳实践,提高开发效率和质量。坑已挖,欢迎大家踊跃提交PR或者在该🏗️C#/.NET/.NET Core优秀项目和框架Issues中留言(让优秀的项目和框架不被埋没),我会定期收录、公众号推广和分享👀。
追逐时光者
2023/10/10
3.8K0
【推荐】.NET类库“Vanara”:简单易用的Windows API封装库
此项目包含各种.NET程序集,这些程序集包含来自Windows库的P/Invoke函数、接口、枚举和结构。每个程序集都与一个或几个紧密相关的库相关联。例如,Shlwapi.dll包含从Shlwapi.lib导出的所有函数;Kernel32.dll包含Kernel32.lib和kernelbase.lib的全部。
沙漠尽头的狼
2021/12/01
1.9K0
dotnet DirectX 做一个简单绘制折线笔迹的 D2D 应用
本文将告诉大家如何从简单的控制台开始,使用 Vortice 辅助调用 Direct2D1 的功能,配合 WM_Pointer 消息,制作一个简单绘制触摸折线笔迹的 D2D 应用
林德熙
2024/10/16
1600
2019-3-7-手把手教你PInvoke
这个时候你就会接触到一些美妙的dll,比如user32.dll,kernal32.dll
黄腾霄
2020/06/10
9440
DotNet 资源大全中文版(Awesome最新版)
张果
2018/01/04
16.8K0
开发属于自己的插件 | IDEA & Android Studio插件开发指南
谷轩宇——从事安卓开发,目前效力于通天塔技术开放组是否曾经被ide重复繁琐的操作所困扰,又或者没有心仪的UI控件而难受。那么请阅读这篇文章,掌握idea插件的开发流程,开发属于自己的插件,造福开源社区。
京东技术
2018/09/28
5K0
开发属于自己的插件 | IDEA & Android Studio插件开发指南
推荐阅读
相关推荐
使用SemanticKernel 进行智能应用开发(2023-10更新)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档