What is the Windows Projected File System?

27,221

Solution 1

Projected File System aka ProjFS is a feature similar to FUSE found on Linux (or to Dokan & WinFSP). It allows apps to create virtual file systems which appear indistinguishable from local folders, but their entire contents are generated "live" by the program. (In other words, you're seeing projections of files which might not be there.)

The primary use of ProjFS is Microsoft's "Git Virtual File System", an addon to the Git version management tool aimed at increasing its performance and reducing disk space usage when dealing with massive repositories. (Git was built for repositories containing just tens of thousands of files, such as Linux.git; but Microsoft have started using it internally for the Windows source repository, which is several orders of magnitude larger.)

Currently ProjFS doesn't seem to be publicly documented, but I expect that sooner or later third-party developers will figure out how to use it as a FUSE alternative for implementing such virtual filesystems as sshfs, ftpfs, and so on.

Note: Projected File System has nothing to do with Windows File Protection.

As noted in the comments, documentation is now available for the feature.

Solution 2

Windows Projected File System is not an alternative to FUSE or Dokan.

It appears to be similar to FUSE and Dokan at first glance, even using callbacks to populate the file list, and read data from files.

However, once you read a file, the projected file is replaced with a physical file on your hard disk, which will stay on the disk.

Share:
27,221
Canadian Luke
Author by

Canadian Luke

Updated on September 18, 2022

Comments

  • Canadian Luke
    Canadian Luke over 1 year

    In the latest builds of Windows 10, there is a new feature, in Beta, called Windows Projected File System. I cannot find any information on Google, other than programming APIs that do not make sense to me.

    What is it, and what kind of users would it be targeted for?

    enter image description here

  • user253751
    user253751 over 5 years
    Several orders of magnitude larger, to me, means Windows contains at least a billion source files. Is that accurate?
  • niutech
    niutech over 5 years
    How does WPFS differ from IFS?
  • nxnev
    nxnev over 5 years
    @user20574 According to GVFS website: "Windows operating system, which clocks in at roughly 300 GB (3.5 million files)". And a MS blog post: "the Windows code base is approximately 3.5M files and, when checked in to a Git repo, results in a repo of about 300GB".
  • user253751
    user253751 over 5 years
    So two orders of magnitude, then.
  • josh3736
    josh3736 over 5 years
    @niutech: IFS is an API for building kernel-mode filesystem drivers that can be dynamically loaded (as opposed to built in to the kernel itself). ProjFS is an API for building user-mode filesystem drivers (ie, drivers that run like a regular exe).
  • phuclv
    phuclv over 5 years
    @user20574 the Windows repo includes everything in MS like Office, Windows kernel, Windows tools, Visual Studio, Skype... and not only the kernel like Linux, so no wonder it'll be a lot bigger
  • user420603
    user420603 over 5 years
    @phuclv citation needed. "Windows" includes a lot of stuff (that would be extra packages on Linux; think the entire GUI, Notepad, etc.), but I can't believe that the repo contains all of Microsoft's products.
  • Austin Burk
    Austin Burk over 5 years
    WOW! I've never heard of this, this is excellent!
  • plugwash
    plugwash over 5 years
    The git virtual filesystem seems to be open-source, so even if there is no documentation there is effectively public example code.
  • phuclv
    phuclv over 5 years
  • phuclv
    phuclv over 5 years
  • Hong Ooi
    Hong Ooi over 5 years
    @phuclv Exactly, it is NOT everything in MS. Windows is big on its own.
  • Jan Hudec
    Jan Hudec over 5 years
    The problem is not as much many files as huge files. Git was designed to store source code, but Microsoft has images and other media and various data blobs thrown in their source repositories.
  • NtFreX
    NtFreX over 5 years
    There is now documentation here.
  • 0xC0000022L
    0xC0000022L about 2 years
    So it's never again updated from the backing store? Is that what you're saying? Could you please name your sources for that.
  • Dwedit
    Dwedit about 2 years
    I didn't check if it was 'ever checking the backing store again', I just didn't want something that was writing files to the disk.