Sdílet prostřednictvím


O zástupných symbolech

Zástupný symbol systému souborů je soubor, který představuje skutečný obsah souboru nebo adresáře, který se nachází jinde. Tato optimalizace umožňuje, aby se skutečný obsah souboru nebo adresáře načítal jinde a načítá se na vyžádání. Skutečný obsah zahrnuje metadata, data souborů a položky adresáře.

Zástupné symboly můžou být soubory nebo adresáře. Mohou obsahovat část skutečného souboru nebo metadat adresáře nebo část dat skutečného souboru nebo položek adresáře. Zástupné soubory jsou označené jako řídké soubory s FILE_ATTRIBUTE_SPARSE_FILE bitovou sadou.

Zástupný symbol je obvykle bod opětovné analýzy, který minifiltr systému souborů vlastní a spravuje. Vlastníkem minifiltru je povolení virtualizace a umožňuje, aby zástupný symbol vypadal a chovat se jako běžný soubor nebo adresář v systému souborů. Tyto virtualizační ovladače zachycují vstupně-výstupní požadavky na jejich místech a usnadňují chování podobné souborovému systému. ProjFs a Cloud Files jsou dvě příklady virtualizačních platforem ve Windows, které používají zástupci.

Minifiltry, které vlastní zástupné symboly, dokážou odpovídajícím způsobem zpracovávat takové vstupně-výstupní požadavky, aby splňovaly vstupně-výstupní operace. Pokud se například aplikace pokusí přečíst dehydrovaný zástupný soubor, minifiltr doručí data souboru tak, aby splňovala požadavek vstupně-výstupní operace.

Vlastnící minifiltry jsou schopny poskytovat virtualizaci pouze pro vstupně-výstupní požadavky, které jsou nad nimi, a to buď z uživatelského režimu, nebo ze součástí, které jsou nad nimi v zásobníku vstupně-výstupních operací.

Minifiltry, které nevlastní zástupný symbol, mají možnost provádět vstupně-výstupní operace zaměřené na filtry pod nimi pomocí rozhraní API, jako jsou FltReadFile, FltWriteFile atd. Pokud by nevlastní minifilter vydal cílový vstupně-výstupní požadavek na zástupný soubor z pod vlastním minifiltrem, vlastnící minifiltr by nemohl odpovídajícím způsobem vyhovět požadavkům vstupně-výstupních operací.

Pokud například filtr vydá cílový soubor FltReadFile na dehydrovaný zástupný soubor, který vlastní minifiltr nevidí, filtr cílení může místo skutečných dat získat blok nul (0s), protože zástupný symbol může být řídký soubor. Pokud systém ukládá do mezipaměti čtení, které načetlo blok 0s, znečistí mezipaměť, která by mohla poškodit data souboru, pokud systém vyprázdní znečištěnou mezipaměť na disk. Proto je nezbytné, aby minifiltry správně zpracovávaly zástupné symboly.