Udostępnij przez


Informacje o symbolach zastępczych

Symbol zastępczy systemu plików to plik reprezentujący rzeczywistą zawartość pliku lub katalogu, który znajduje się gdzie indziej. Dzięki tej optymalizacji rzeczywista zawartość pliku lub katalogu znajduje się w innym miejscu i jest pobierana na żądanie. Rzeczywista zawartość zawiera metadane, dane pliku i wpisy katalogu.

Symbole zastępcze mogą być plikami lub katalogami. Mogą zawierać część rzeczywistych metadanych pliku lub katalogu albo część rzeczywistych danych pliku lub wpisów katalogu. Pliki zastępcze są oznaczone jako rzadkie pliki z ustawionym bitem FILE_ATTRIBUTE_SPARSE_FILE.

Zazwyczaj element zastępczy jest punktem ponownej analizy, który jest własnością i jest zarządzany przez minifiltr systemu plików. Minifiltr właścicielski jest elementem umożliwiającym wirtualizację, pozwalając symbolowi zastępczemu wyglądać i zachowywać się jak zwykły plik lub katalog w systemie plików. Sterowniki wirtualizacji przechwytują żądania wejścia/wyjścia na przypisanych przez siebie symbolach zastępczych, co umożliwia działanie podobne do zachowania systemu plików. ProjFs i Cloud Files to dwa przykłady platform wirtualizacji w systemie Windows, które używają kontenerów zastępczych.

Minifiltry, które są właścicielami symboli zastępczych, są w stanie odpowiednio obsługiwać takie żądania we/wy w celu spełnienia operacji we/wy. Jeśli na przykład aplikacja próbuje odczytać odwodniony plik zastępczy, minifiltr dostarcza dane pliku w celu spełnienia żądania we/wy.

Posiadane minifiltry są w stanie zapewnić wirtualizację tylko dla żądań we/wy, które pochodzą powyżej nich, z trybu użytkownika lub składników, które znajdują się nad nimi w stosie we/wy.

Minifiltry, które nie są właścicielami przestrzeni buforowej, mają możliwość wykonywania operacji wejścia/wyjścia ukierunkowanych na filtry poniżej przy użyciu interfejsów API, takich jak FltReadFile, FltWriteFile itd. Jeśli minifiltr nienależący do właściciela miał wydać ukierunkowane żądanie we/wy do pliku zastępczego z poniższego minifiltru, właściciel minifiltr nie byłby w stanie odpowiednio spełnić żądania we/wy.

Jeśli na przykład filtr wystawia docelowy plik FltReadFile do odwodnionego pliku zastępczego, którego nie widzi minifiltr, filtr docelowy może uzyskać blok zer (0s) zamiast rzeczywistych danych, ponieważ symbol zastępczy może być plikiem rozrzedzony. Jeśli system buforuje odczyt, który pobrał blok zer, ten odczyt zanieczyszcza pamięć podręczną, co może uszkodzić dane pliku, jeśli system zapisuje zanieczyszczoną pamięć podręczną na dysk. Dlatego konieczne jest, aby minifiltry odpowiednio obsługiwały elementy zastępcze.