Gyorsítótár állapota a virtualizálási gyökérben
A szolgáltató a virtualizálási gyökér alatt található helyi fájlrendszert használja az általa kezelt elemek gyorsítótáraként. Egy elem (fájl vagy könyvtár) a helyi fájlrendszer hat állapotának egyikében lehet:
Virtuális
Az elem helyileg nem létezik a lemezen. A szülőkönyvtár enumerálása során előrejelzett, azaz szintetizált. A rendszer egyesíti a virtuális elemeket a lemezen található elemekkel a szülőkönyvtár teljes tartalmának megjelenítéséhez.
Helyőrző
Fájlok esetén: A fájl tartalma (elsődleges adatfolyam) nem található a lemezen. A fájl metaadatai (név, méret, időbélyegek, attribútumok stb.) gyorsítótárazva lesznek a lemezen.
Könyvtárak esetén: A könyvtár néhány vagy az összes közvetlen leszármazottja (a könyvtárban lévő fájlok és könyvtárak) nem találhatók a lemezen, azaz még mindig virtuálisak. A könyvtár metaadatai (név, időbélyegek, attribútumok stb.) gyorsítótárazva lesznek a lemezen.
Hidratált helyőrző
Fájlok esetén: A fájl tartalma és metaadatai gyorsítótárazva lettek a lemezen. Más néven "részleges fájl".
Könyvtárak esetén: A lemezen helyőrzőként létrehozott könyvtár soha nem lesz hidratált helyőrző könyvtár. Ez lehetővé teszi a szolgáltató számára, hogy elemeket vegyen fel vagy távolítson el a címtárból a háttértárban, és hogy ezek a módosítások megjelenjenek a helyi gyorsítótárban.
Piszkos helyőrző (hidratált vagy nem)
Az elem metaadatai helyileg módosultak, és már nem a szolgáltató tárolójában lévő állapot gyorsítótára. Vegye figyelembe, hogy egy helyőrző könyvtárban lévő fájl vagy könyvtár létrehozása vagy törlése miatt a helyőrző könyvtár koszossá válik.
Teljes fájl/könyvtár
Fájlok esetén: A fájl tartalma (elsődleges adatfolyam) módosult. A fájl már nem a szolgáltató tárolójában lévő állapot gyorsítótára. A helyi fájlrendszerben létrehozott fájlok (azaz amelyek egyáltalán nem léteznek a szolgáltató tárolójában) szintén teljes fájlnak minősülnek.
Könyvtárak esetében: A helyi fájlrendszerben létrehozott könyvtárak (azaz amelyek egyáltalán nem léteznek a szolgáltató tárolójában) teljes könyvtáraknak minősülnek. A lemezen helyőrzőként létrehozott címtárak soha nem lesznek teljes könyvtárak.
Sírkő
Egy speciális rejtett helyőrző, amely egy, a helyi fájlrendszerből törölt elemet jelöl. A címtárak számbavételekor a ProjFS egyesíti a helyi elemek készletét (helyőrzők, teljes fájlok stb.) a virtuális kivetített elemek készletével. Ha egy elem a helyi és a tervezett készletben is megjelenik, a helyi elem elsőbbséget élvez. Ha egy fájl nem létezik a helyi fájlrendszerben, akkor nincs helyi állapot, ezért megjelenik az enumerálásban. Ha azonban az elemet törölték volna, az enumerálásban való megjelenése váratlan lenne. Ha egy törölt elemet egy sírkőre cserél, az a következő hatásokat eredményezi:
- Enumerálások, hogy ne fedje fel az elemet.
- Megnyílik egy fájl, amely azt várja, hogy az elem létezni fog, például "a fájl nem található".
- A fájl létrehozása csak akkor várható sikerrel, ha az elem nem létezik sikeres; A ProjFS eltávolítja a sírkövet a művelet részeként.
A fenti állapotok szemléltetéséhez vegye figyelembe a következő sorrendet, mivel egy ProjFS-szolgáltató egyetlen fájllal rendelkezik, amely a C virtualizálási gyökérkönyvtárban található "foo.txt" fájllal rendelkezik:\root.
- Egy alkalmazás számba adja a C:\rootot. Megjelenik a "foo.txt" virtuális fájl. Mivel a fájl még nem érhető el, a fájl nem létezik a lemezen.
- Az alkalmazás megnyitja a C:\root\foo.txtleíróját. A ProjFS arra utasítja a szolgáltatót, hogy hozzon létre egy helyőrzőt.
- Az alkalmazás felolvassa a fájl tartalmát. A szolgáltató biztosítja a fájltartalmat a ProjFS-nek, és gyorsítótárazza C:\root\foo.txt. A fájl mostantól hidratált helyőrző.
- Az alkalmazás frissíti a legutóbb módosított időbélyeget. A fájl most már egy piszkos hidratált helyőrző.
- Az alkalmazás megnyit egy leírót a fájlhoz való íráshoz. C:\root\foo.txt most már teljes fájl.
- Az alkalmazás törli C:\root\foo.txt. A ProjFS egy sírkőre cseréli a fájlt. Most, amikor az alkalmazás számba C:\root it does not see foo.txt. Ha megpróbálja megnyitni a fájlt, a megnyitás meghiúsul a ERROR_FILE_NOT_FOUND.