IStorageProviderKnownFolderSyncInfoSource Interfaccia
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Interfaccia implementata da un provider di servizi cloud per fornire informazioni sullo stato di sincronizzazione delle cartelle note.
public interface class IStorageProviderKnownFolderSyncInfoSource
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Storage.Provider.CloudFilesContract, 458752)]
/// [Windows.Foundation.Metadata.Guid(1362465602, 63424, 21456, 187, 182, 28, 220, 9, 142, 189, 169)]
struct IStorageProviderKnownFolderSyncInfoSource
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Storage.Provider.CloudFilesContract), 458752)]
[Windows.Foundation.Metadata.Guid(1362465602, 63424, 21456, 187, 182, 28, 220, 9, 142, 189, 169)]
public interface IStorageProviderKnownFolderSyncInfoSource
Public Interface IStorageProviderKnownFolderSyncInfoSource
- Attributi
Requisiti Windows
Famiglia di dispositivi |
Windows 11 Insider Preview (è stato introdotto in 10.0.23504.0)
|
API contract |
Windows.Storage.Provider.CloudFilesContract (è stato introdotto in v7.0)
|
Esempio
L'esempio seguente illustra l'implementazione di un provider di archiviazione di IStorageProviderKnownFolderSyncInfoSource:
namespace winrt::CloudMirror::implementation
{
struct MyKnownFolderInfoSource : implements<MyKnownFolderInfoSource,
winrt::CloudMirror::IStorageProviderKnownFolderSyncInfoSource>
{
MyKnownFolderInfoSource();
StorageProviderKnownFolderSyncInfo GetKnownFolderSyncInfo();
winrt::event_token KnownFolderSyncInfoChanged(
winrt::Windows::Foundation::TypedEventHandler<IStorageProviderKnownFolderSyncInfoSource,
winrt::Windows::Foundation::IInspectable> const& handler);
void KnownFolderSyncInfoChanged(winrt::event_token const& token) noexcept;
private:
winrt::hstring GetProviderDisplayName();
winrt::Uri GetAvailableIcon();
winrt::Uri GetEnrollingIcon();
void NotifyStateChanged();
winrt::event<winrt::TypedEventHandler<IStorageProviderKnownFolderSyncInfoSource, IInspectable>> m_changedEvent;
std::vector<StorageProviderKnownFolderEntry> m_knownFolderEntries;
};
}
...
using namespace winrt::Windows::Storage::Provider;
namespace winrt::CloudMirror::implementation
{
MyKnownFolderInfoSource::MyKnownFolderInfoSource()
{
// The cloud provider would assess its current state and use it to
// inform File Explorer. In this example, Documents is available for
// backup, Pictures is currently enrolling, and Downloads is already
// backed up (enrolled).
winrt::StorageProviderKnownFolderEntry documents{};
documents.KnownFolderId(FOLDERID_Documents);
documents.Status(StorageProviderKnownFolderSyncStatus::Available);
m_knownFolderState.push_back(documents);
winrt::StorageProviderKnownFolderEntry pictures{};
pictures.KnownFolderId(FOLDERID_Pictures);
pictures.Status(StorageProviderKnownFolderSyncStatus::Enrolling);
m_knownFolderState.push_back(pictures);
winrt::StorageProviderKnownFolderEntry downloads{};
downloads.KnownFolderId(FOLDERID_Downloads);
downloads.Status(StorageProviderKnownFolderSyncStatus::Enrolled);
m_knownFolderState.push_back(downloads);
}
// GetKnownFolderSyncInfo is called by File Explorer whenever it needs to get the
// latest known folder sync status from the cloud provider. Once returned, the
// StorageProviderKnownFolderSyncInfo is considered immutable.
//
// A SyncRequested handler must be set on the returned object to be considered valid
// and to be displayed in File Explorer.
StorageProviderKnownFolderSyncInfo MyKnownFolderInfoSource::GetKnownFolderSyncInfo()
{
winrt::StorageProviderKnownFolderSyncInfo info{};
info.ProviderDisplayName(GetProviderDisplayName());
// Setting a SyncRequested handler to respond to user action.
auto syncRequestHandler = [](
winrt::CloudMirror::StorageProviderKnownFolderSyncRequestArgs const& args)
{
// The user wants to sync some known folders with our cloud provider.
// We can show some UI to sign in, confirm their choice, etc.
MyStorageProviderSyncManager::ShowFolderEnrollmentUI(args.KnownFolders(), args.Source());
// Or we can immediately start syncing the requested folders.
MyStorageProviderSyncManager::StartSyncingFolders(args.KnownFolders(), args.Source());
};
info.SyncRequested(syncRequestHandler);
info.KnownFolderEntries().ReplaceAll(m_knownFolderEntries);
return info;
}
}
Commenti
Esplora file ottiene un'istanza di IStorageProviderKnownFolderSyncInfoSource per un determinato provider chiamando GetKnownFolderSyncInfoSource.
Questa interfaccia fornisce un evento KnownFolderSyncInfoChanged , che l'app genera quando viene modificato qualsiasi stato di proprietà o cartella, incluso il nome visualizzato. Il provider di servizi cloud non deve aspettarsi che GetKnownFolderSyncInfoSource venga chiamato immediatamente dopo la generazione dell'evento. Esplora file richiederà solo un nuovo oggetto in base alle esigenze.
Metodi
GetKnownFolderSyncInfo() |
GetKnownFolderSyncInfo viene chiamato da Esplora file ogni volta che deve ottenere lo stato di sincronizzazione della cartella nota più recente dal provider di servizi cloud. |
Eventi
KnownFolderSyncInfoChanged |
Evento generato quando lo stato di sincronizzazione di una cartella nota viene modificato. |