Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Aparat synchronizacji to usługa, która synchronizuje pliki, zazwyczaj między hostem zdalnym a klientem lokalnym. Aparaty synchronizacji w systemie Windows często przedstawiają te pliki użytkownikowi za pośrednictwem systemu plików Windows i Eksploratora plików. Przed systemem Windows 10, wersja 1709, obsługa mechanizmu synchronizacji w systemie Windows była ograniczona do operacji niezależnych od scenariusza, takich jak okienko nawigacji Eksploratora plików, zasobnik systemowy Windows i (dla bardziej technicznych zastosowań) sterowniki filtrujące system plików.
System Windows 10 w wersji 1709 (nazywany również aktualizacją Fall Creators Update) wprowadził interfejs API plików w chmurze. Ten API to nowa platforma, która formalizuje obsługę silników synchronizacji. Interfejs API plików w chmurze zapewnia obsługę silników synchronizacji w taki sposób, że oferuje wiele nowych korzyści deweloperom i użytkownikom końcowym.
Interfejs API plików w chmurze zawiera następujące natywne interfejsy API Win32 i interfejsy API środowiska uruchomieniowego systemu Windows (WinRT):
- Interfejs API filtru w chmurze: ten natywny interfejs API Win32 zapewnia funkcje na granicy między trybem użytkownika a systemem plików. Ten interfejs API obsługuje tworzenie i zarządzanie plikami zastępczymi i katalogami.
- Przestrzeń nazw Windows.Storage.Provider: Ten interfejs API WinRT umożliwia aplikacjom konfigurowanie dostawcy magazynu w chmurze i rejestrowanie katalogu synchronizacji z systemem operacyjnym.
Uwaga / Notatka
Interfejs API plików w chmurze nie obsługuje obecnie implementowania silników synchronizacji chmury w aplikacjach UWP. Silniki synchronizacji w chmurze muszą być implementowane w aplikacjach desktopowych.
Obsługiwane funkcje
Interfejs API plików w chmurze udostępnia następujące funkcje do tworzenia mechanizmów synchronizacji w chmurze.
Pliki zastępcze
- Silniki synchronizacji mogą tworzyć pliki zastępcze, które zajmują tylko 1 KB pamięci w nagłówku systemu plików i automatycznie przekształcają się w pełne pliki w normalnych warunkach użytkowania. Pliki zastępcze prezentują się jako typowe pliki dla aplikacji i użytkowników końcowych w powłoce Windows.
- Pliki zastępcze są integrowane pionowo od jądra systemu Windows aż po powłokę systemu Windows, a zgodność aplikacji z plikami zastępczymi zazwyczaj nie stanowi problemu. Niezależnie od tego, czy używasz interfejsów API systemu plików, wiersza polecenia, pulpitu, czy aplikacji UWP do uzyskiwania dostępu do pliku zastępczego, plik będzie wczytywany bez dodatkowych zmian w kodzie i aplikacja będzie mogła normalnie używać pliku.
- Pliki mogą istnieć w trzech stanach:
- Plik zastępczy: pusta reprezentacja pliku i dostępna tylko wtedy, gdy usługa synchronizacji jest dostępna.
- Pełny plik: Plik został nawodniony niejawnie i może być odwodniony przez system, jeśli potrzebne jest miejsce.
- Przypięty pełny plik: plik został jawnie pobrany przez użytkownika za pośrednictwem Eksploratora plików i jest zapewnione, że będzie dostępny offline.
Na poniższej ilustracji pokazano, jak w Eksploratorze plików są wyświetlane stany plików jako symbole zastępcze, pliki pełne i pliki przypięte.
Ustandaryzowana rejestracja punktu bazowego synchronizacji
Rejestrowanie katalogu głównego synchronizacji jest proste i ustandaryzowane. Obejmuje to tworzenie węzła oznaczonego marką w okienku nawigacji Eksploratora plików, jak pokazano na poniższym zrzucie ekranu. Korzenie można utworzyć jako pojedyncze wpisy najwyższego poziomu lub jako elementy składowe grupy nadrzędnej.
Integracja powłoki
- Ikony stanu:
- Interfejs API plików w chmurze udostępnia standardowe, automatyczne ikony stanu nawodnienia wyświetlane w Eksploratorze plików i na pulpicie systemu Windows.
- Oprócz standardowych ikon stanu systemu Windows używanych do stanu nawodnienia, można udostępnić niestandardowe ikony stanu dla dodatkowych właściwości specyficznych dla usługi.
- Zastępuje przestarzałe rozszerzenia nakładek ikon powłoki.
- Wskazanie postępu:
- Otwarcie pliku zastępczego, który zajmuje więcej niż kilka sekund na wczytanie, pokaże postęp wczytywania. Postęp jest wyświetlany w kilku lokalizacjach w zależności od kontekstu:
- W oknie dialogowym mechanizmu kopiującego.
- Postęp pokazywany jest obok pliku w Eksploratorze plików.
- Jeśli plik nie zostanie otwarty w określonej instrukcji użytkownika, zostanie wyświetlone wyskakujące powiadomienie informujące użytkownika i zapewnienie sposobu kontrolowania niezamierzonej aktywności nawodnienia.
- Otwarcie pliku zastępczego, który zajmuje więcej niż kilka sekund na wczytanie, pokaże postęp wczytywania. Postęp jest wyświetlany w kilku lokalizacjach w zależności od kontekstu:
- Miniatury i metadane:
- Pliki zastępcze mogą mieć rozbudowane miniatury udostępniane przez usługę i rozszerzone metadane plików, aby zapewnić użytkownikowi bezproblemowe środowisko Eksploratora plików.
- Okienko nawigacji Eksploratora plików:
- Zarejestrowanie katalogu głównego synchronizacji za pomocą interfejsu API plików w chmurze powoduje, że katalog główny synchronizacji (z ikoną i nazwą niestandardową) będzie wyświetlany w okienku nawigacji Eksploratora plików.
- Menu kontekstowe Eksploratora plików:
- Zarejestrowanie katalogu głównego synchronizacji za pomocą interfejsu API plików w chmurze automatycznie udostępnia kilka czasowników (wpisów menu) w menu kontekstowym Eksploratora plików, które pozwala użytkownikowi kontrolować stan nawodnienia pliku.
- Dodatkowe czasowniki można dodać do tej części menu kontekstowego z wykorzystaniem interfejsów API zgodnych z Desktop Bridge.
- Kontrola użytkownika nad nawodnieniem plików:
- Użytkownicy zawsze kontrolują nawodnienie plików, nawet jeśli pliki nie są jawnie nawodnione przez użytkownika. Interaktywny komunikat toast jest wyświetlany podczas synchronizacji w tle, aby powiadomić użytkownika i zapewnić opcje. Na poniższej ilustracji przedstawiono wyskakujące powiadomienie dotyczące pliku nawilżającego.
- Jeśli użytkownik zablokuje aplikację przed synchronizowaniem plików za pomocą powiadomienia interaktywnego, może odblokować aplikację na stronie Automatyczne pobieranie plików w ustawieniach Ustawienia.
- Użytkownicy zawsze kontrolują nawodnienie plików, nawet jeśli pliki nie są jawnie nawodnione przez użytkownika. Interaktywny komunikat toast jest wyświetlany podczas synchronizacji w tle, aby powiadomić użytkownika i zapewnić opcje. Na poniższej ilustracji przedstawiono wyskakujące powiadomienie dotyczące pliku nawilżającego.
- Zaczepianie operacji silnika kopiowania (obsługiwane w systemie Windows 10 Insider Preview Build 19624 i nowszych wersjach):
- Dostawcy magazynu w chmurze mogą zarejestrować hak kopiowania powłoki na potrzeby monitorowania operacji plików w katalogu głównym synchronizacji.
- Dostawca rejestruje swój punkt zaczepienia kopiowania, ustawiając wartość rejestru CopyHook w kluczu rejestru ich głównego katalogu synchronizacji na identyfikator CLSID ich obiektu serwera lokalnego COM. Ten obiekt serwera lokalnego implementuje interfejs IStorageProviderCopyHook .
- Udostępnianie plików (obsługiwane w systemie Windows 11 w wersji 21H2 lub nowszej):
- Dostawcy przechowywania w chmurze mogą zarejestrować procedurę obsługi udostępniania, która zostanie wywołana, gdy użytkownik wybierze polecenie "Udostępnij" w pliku w chmurze w głównym katalogu synchronizacji.
- Dostawca rejestruje procedurę obsługi udziału, ustawiając wartość rejestru programu ShareHandler w ramach klucza rejestru głównego synchronizacji z identyfikatorem CLSID obiektu serwera lokalnego COM. Ten obiekt serwera lokalnego implementuje interfejs IExplorerCommand .
Mostek dla aplikacji klasycznych
- Aparaty synchronizacji korzystające z interfejsów API plików w chmurze są zaprojektowane tak, aby wykorzystywać Desktop Bridge jako wymaganie implementacji.
Przykład Lustra Chmury
Przykład Cloud Mirror ilustruje sposób tworzenia rozwiązania korzystającego z interfejsu API plików w chmurze. Nie jest przeznaczony do użycia jako kod produkcyjny. Brak solidnej obsługi błędów i jest napisany tak, aby był jak najbardziej zrozumiałe. Jest ona nazywana usługą Cloud Mirror, ponieważ po prostu dubluje folder lokalny na dysku lokalnym. Należy określić folder serwera, który ma reprezentować serwer plików w chmurze i folder klienta przeznaczony do określenia ścieżki głównej synchronizacji. Węzeł najwyższego poziomu zostanie wyświetlony w okienku nawigacji w Eksploratorze plików o nazwie TestStorageProviderDisplayName, a ten węzeł jest mapowany na określony folder klienta.
Jeśli chodzi o synchronizację, są to elementy, które musi zaimplementować w pełni opracowany dostawca synchronizacji plików w chmurze:
- Gdy plik bazowy synchronizacji jest tylko elementem zastępczym, usługa odpowiada za kopiowanie zawartości pliku w celu jego uzupełnienia danych. Jest to implementowane w przykładzie.
- Gdy plik główny synchronizacji jest pełnym plikiem i zawartość pliku w usłudze w chmurze się zmienia, usługa jest zobowiązana do powiadomienia lokalnego klienta synchronizacji o zmianie, a lokalny klient synchronizacji musi obsługiwać scalanie zgodnie z własnymi specyfikacjami. Nie jest to zaimplementowane w przykładzie.
- Gdy plik główny synchronizacji jest pełnym plikiem, a zawartość pliku w ścieżce głównej synchronizacji (klienta lokalnego) zmienia się, klient synchronizacji lokalnej musi powiadomić usługę w chmurze i obsługiwać scalania zgodnie z ich własnymi specyfikacjami. Powiadomienie o zmianie pliku lokalnego jest implementowane w przykładzie, ale nie wykonuje żadnych czynności.
Korzystanie z przykładu
- Utwórz dwa foldery na lokalnym dysku twardym. Jeden z nich będzie działać jako serwer, a drugi jako klient.
- Dodaj pliki do folderu serwera. Upewnij się, że folder klienta jest pusty.
- Otwórz przykład Cloud Mirror w programie Visual Studio. Ustaw projekt CloudMirrorPackage jako projekt startowy, a następnie skompiluj i uruchom przykład. Po wyświetleniu monitu przez przykład wprowadź dwie ścieżki do serwera i folderów klienckich. Po wykonaniu tej operacji zostanie wyświetlone okno konsoli z informacjami diagnostycznymi.
- Otwórz Eksploratora plików i upewnij się, że zostanie wyświetlony węzeł TestStorageProviderDisplayName i symbole zastępcze dla wszystkich plików skopiowanych do folderu serwera. Aby zasymulować aplikację, która próbuje otworzyć pliki bez użycia selektora, skopiuj kilka obrazów do folderu serwera. Kliknij dwukrotnie jeden z nich w folderze głównym synchronizacji i upewnij się, że nawilża. Następnie otwórz aplikację Zdjęcia. Aplikacja wstępnie załaduje sąsiadujące pliki w tle, aby zwiększyć prawdopodobieństwo, że użytkownik nie doświadcza opóźnień podczas przeglądania innych obrazów. Możesz obserwować odwodnienie w tle za pośrednictwem wyskakujące lub w Eksploratorze plików.
- Kliknij prawym przyciskiem myszy plik w Eksploratorze plików, aby wyświetlić menu kontekstowe i upewnij się, że zostanie wyświetlony element menu TestCommand . Kliknięcie tego elementu menu spowoduje wyświetlenie pola komunikatu.
- Aby zatrzymać proces, ustaw fokus na wyjściu konsoli i naciśnij Ctrl-C. Spowoduje to wyczyszczenie rejestracji głównej synchronizacji, aby odinstalować dostawcę. Jeśli próbka ulegnie awarii, możliwe, że katalog synchronizacji pozostanie zarejestrowany. Spowoduje to ponowne uruchamianie Eksploratora plików za każdym razem, gdy klikniesz cokolwiek, i pojawi się prośba o wprowadzenie fałszywych lokalizacji klienta i serwera. W takim przypadku odinstaluj przykładową aplikację CloudMirrorPackage z komputera.
Przykładowa architektura
Przykład jest celowo prosty. Używa klas statycznych, aby niepotrzebnie przekazywać wskaźniki wystąpienia. Oto główne klasy w przykładzie:
-
FakeCloudProvider: Ta klasa najwyższego poziomu kontroluje następujące klasy procesów roboczych:
- CloudProviderRegistrar: rejestruje informacje główne synchronizacji w powłoce systemu Windows.
- Symbole zastępcze: tworzy pliki symboli zastępczych w ścieżce głównej synchronizacji.
- ShellServices: konstruuje dostawców powłoki Windows dla menu kontekstowego, miniatur i innych usług.
- CloudProviderSyncRootWatcher: Instancjuje DirectoryWatcher do monitorowania zmian w ścieżce głównej synchronizacji i reagowania na zmiany.
- FileCopierWithProgress: kopiuje pliki z folderu serwera do folderu klienta powoli we fragmentach, aby symulować pobieranie ich z rzeczywistego serwera w chmurze. Zawiera wskaźnik postępu, aby powiadomienia i interfejsy użytkownika Eksploratora plików wyświetlały użytkownikowi informacje.
Oprócz powyższych klas przykład zawiera również kilka klas pomocniczych, aby zapytać użytkownika o foldery i niektóre narzędzia. TestExplorerCommandHandler, CustomStateProvider, ThumbnailProvider i UriSource to przykłady dostawców usług powłoki.
Architektura interfejsu API plików w chmurze
Podstawowym elementem stosu magazynu w interfejsie API plików w chmurze jest sterownik minifiltru systemu plików o nazwie cldflt.sys. Ten sterownik działa jako serwer proxy między aplikacjami użytkownika a silnikiem synchronizacyjnym. Aparat synchronizacji wie, jak na żądanie pobierać i przekazywać dane, podczas gdy to cldflt.sys jest odpowiedzialne za współpracę z powłoką Shell, aby prezentować pliki, jakby dane w chmurze były dostępne lokalnie.
Cldflt.sys obecnie obsługuje tylko woluminy NTFS, ponieważ zależy od niektórych funkcji unikatowych dla systemu plików NTFS.
Istnieje wiele sterowników minifiltrów systemu plików w systemie i mogą być aktywne na danym woluminie w tym samym czasie. Sterowniki, które są najbardziej interesujące dla interfejsu API plików w chmurze, to filtry systemu plików antywirusowego.
Sterowniki minifiltrów systemu plików są zarządzane i obsługiwane przez specjalny składnik trybu jądra nazywany menedżerem filtrów. Wśród wielu innych obowiązków menedżer filtrów ułatwia niefiltrowaną komunikację między składnikami filtrów i składnikami trybu użytkownika za pomocą konstrukcji znanej jako port komunikatów filtru.
Zasady nawodnienia
System Windows obsługuje różne podstawowe zasady nawodnienia i pomocnicze modyfikatory zasad nawodnienia . Podstawowe zasady nawodnienia mają następującą kolejność:
Zawsze pełne > Pełne > Progresywne > Częściowe
Zarówno aplikacje, jak i aparaty synchronizacji mogą definiować preferowane podstawowe zasady nawodnienia. Jeśli nie zostanie określony, domyślne zasady nawodnienia są progresywne zarówno dla aplikacji, jak i aparatów synchronizacji.
Zasady nawodnienia pliku w chmurze są określane w czasie otwierania pliku przez następującą formułę:
File hydration policy = max(app hydration policy, provider hydration policy)
Załóżmy na przykład, że użytkownik próbuje otworzyć plik PDF przechowywany na dysku w chmurze firmy Fabrikam przy użyciu przeglądarki plików PDF Firmy Contoso, która nie określa preferowanych zasad nawodnienia. Polityka nawodnienia aplikacji polega zatem na progresywnym nawodnieniu, w tym przypadku domyślnie. Jednak ponieważ dysk Fabrikam Cloud Drive działa jako silnik synchronizacji pełnej synchronizacji, docelowa polityka synchronizacji pliku staje się pełną synchronizacją, co spowoduje, że plik zostanie w pełni zsynchronizowany przy pierwszym dostępie. Ten sam wynik występuje w przypadkach, gdy aparat synchronizacji obsługuje stopniowe nawodnienie, ale preferencje aplikacji są pełne nawodnienie.
Należy pamiętać, że nie można zmienić zasad nawodnienia pliku po otwarciu pliku.
Zgodność z aplikacjami korzystającymi z punktów ponownej analizy
Interfejs API plików w chmurze implementuje system zastępczy przy użyciu punktów przetwarzania ponownego. Typowe błędne przekonanie o punktach ponownej analizy polega na tym, że są one takie same jak linki symboliczne. To błędne przekonanie jest od czasu do czasu odzwierciedlane w implementacjach aplikacji, a w rezultacie wiele istniejących aplikacji napotka błędy podczas napotkania dowolnego punktu ponownej analizy.
Aby rozwiązać ten problem ze zgodnością, interfejs API plików w chmurze zawsze ukrywa punkty ponownej analizy ze wszystkich aplikacji z wyjątkiem aparatów synchronizacji i procesów, których główny obraz znajduje się w %systemroot%. Aplikacje, które prawidłowo rozumieją punkty ponownej analizy, mogą wymusić uwidocznienie punktów ponownej analizy interfejsu API plików chmurowych przy użyciu RtlSetProcessPlaceholderCompatibilityMode lub RtlSetThreadProcessPlaceholderCompatibilityMode.
Wyszukiwanie plików w chmurze
Wyszukiwanie plików w chmurze jest obsługiwane w systemie Windows 11 w wersji 24H2 i nowszych na komputerach Copilot+ lub komputerach w chmurze z obsługą sztucznej inteligencji. Dostępne są następujące funkcje dla dostawców magazynu w chmurze w celu zintegrowania z funkcją Windows Search:
- Dostawcy magazynu w chmurze mogą zarejestrować obsługę wyszukiwania plików dla głównego miejsca synchronizacji, umożliwiając im dodawanie wyników wyszukiwania w Eksploratorze plików i usłudze Windows Search.
- Dostawcy magazynu w chmurze rejestrują procedurę obsługi wyszukiwania, ustawiając wartość rejestru SearchHandlerFactory pod kluczem rejestru synchronizacji głównej na identyfikator CLSID ich lokalnego obiektu serwera COM. Ten obiekt serwera lokalnego implementuje interfejs IStorageProviderSearchHandlerFactory .
- Element IStorageProviderSearchHandlerFactory tworzy implementację elementu IStorageProviderSearchHandler. Ta implementacja IStorageProviderSearchHandler wywołuje usługę wyszukiwania dostawcy usług w chmurze w celu wyszukiwania plików, które mogą być niedostępne lokalnie na urządzeniu.
- Środowisko Windows Search wywołuje metodę Find podczas wyszukiwania, scalając wyniki z lokalnych indeksatorów wyszukiwania.
Treści powiązane
Integracja dostawcy plików w chmurze z usługą Windows Search