Udostępnij przez


Obsługa symboli zastępczych

Wskazówki dotyczące minifiltrów implementujących symbole zastępcze

Wszystkie implementacje wirtualizacji używające symboli zastępczych muszą ustawić atrybut pliku FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS na tych symbolach zastępczych. Ten atrybut wskazuje, że:

  • Odczytywanie takich plików z poniższego minifiltru może zwrócić wartość 0s i
  • Odczytywanie takich plików z powyższych minifiltrów wiąże się z dodatkowym kosztem dostarczenia danych.

Minifiltr może usunąć ten atrybut z symbolu zastępczego, gdy całe dane będą dostępne lokalnie.

Wszystkie minifiltry implementujące symbole zastępcze muszą znajdować się w Grupie Kolejności Ładowania HSM.

Wskazówki dotyczące wszystkich minifiltrów

Filtry nie mogą wykonywać ukierunkowanych operacji odczytu/zapisu z wystąpień filtru znajdujących się poniżej grupy kolejności ładowania HSM dla plików, które mają ustawiony atrybut FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS. Taka sytuacja może prowadzić do uszkodzenia danych plików. Deweloper minifiltru może spróbować obejść tę sytuację, wydając żądanie I/O na szczyt stosu, ale takie żądanie może prowadzić do zakleszczeń.

Filtry nie powinny również przeprowadzać operacji odczytu i zapisu w plikach zastępczych, które mają ustawiony atrybut FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS z pominięciem grupy kolejności ładowania modułu HSM. Taki odczyt lub zapis powoduje niepotrzebne nawodnienie, gdy żadna aplikacja użytkownika nie zażądała danych pliku.

Minifiltr nie powinien realizować operacji odczytu/zapisu przy przechwytywaniu otwarć tylko dla atrybutów. Takie operacje odczytu/zapisu mogą powodować zakleszczenia, gdyż niektóre implementacje nie przewidują, że otwieranie tylko do atrybutów będzie przekształcane w operacje dostępu do danych. Ponadto takie operacje odczytu/zapisu niweczą cel działania minifiltra sprawdzającego atrybut FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS, aby uniknąć dwóch wyżej wymienionych sytuacji.

Zaleca się, aby wszystkie minifiltry nie wystawiały odczytów/zapisów w plikach, które mają ustawiony atrybut FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS.