Kit de développement logiciel (SDK) Microsoft Information Protection - Concepts du profil du kit de développement logiciel (SDK) Protection
Les deux exemples ci-dessous montrent comment créer l’objet profileSettings à l’aide du stockage local pour le stockage d’état, ainsi que dans la mémoire uniquement.
Charger un profil
Maintenant que la ProtectionProfileObserverImpl
est définie, nous l’utiliserons pour instancier mip::ProtectionProfile
. La création de l’objet mip::ProtectionProfile
nécessite mip::ProtectionProfile::Settings
.
Paramètres ProtectionProfile::Settings
std::shared_ptr<MipContext>
: L’objetmip::MipContext
initialisé pour stocker les informations de l’application, le chemin d’état, etc.mip::CacheStorageType
: Définit comment stocker l’état : en mémoire, sur le disque ou sur le disque et chiffré.std::shared_ptr<mip::ConsentDelegate>
: pointeur partagé de classemip::ConsentDelegate
.std::shared_ptr<mip::ProtectionProfile::Observer> observer
: pointeur partagé vers l’implémentation du profilObserver
(dansPolicyProfile
,ProtectionProfile
etFileProfile
).
Les deux exemples ci-dessous montrent comment créer l’objet profileSettings à l’aide du stockage local pour le stockage d’état, ainsi que dans la mémoire uniquement.
Stocker l’état en mémoire uniquement
mip::ApplicationInfo appInfo {clientId, "APP NAME", "1.2.3" };
std::shared_ptr<mip::MipConfiguration> mipConfiguration = std::make_shared<mip::MipConfiguration>(mAppInfo,
"mip_data",
mip::LogLevel::Trace,
false);
std::shared_ptr<mip::MipContext> mMipContext = mip::MipContext::Create(mipConfiguration);
ProtectionProfile::Settings profileSettings(
mMipContext, // mipContext object
mip::CacheStorageType::InMemory, // use in memory storage
std::make_shared<ConsentDelegateImpl>(), // new consent delegate
std::make_shared<ProtectionProfileObserverImpl>()); // new protection profile observer
Paramètres de profil en lecture/écriture à partir du chemin d’accès du stockage sur le disque
mip::ApplicationInfo appInfo {clientId, "APP NAME", "1.2.3" };
std::shared_ptr<mip::MipConfiguration> mipConfiguration = std::make_shared<mip::MipConfiguration>(mAppInfo,
"mip_data",
mip::LogLevel::Trace,
false);
std::shared_ptr<mip::MipContext> mMipContext = mip::MipContext::Create(mipConfiguration);
ProtectionProfile::Settings profileSettings(
mMipContext, // mipContext object
mip::CacheStorageType::OnDisk, // use on disk storage
std::make_shared<ConsentDelegateImpl>(), // new consent delegate
std::make_shared<ProtectionProfileObserverImpl>()); // new protection profile
Ensuite, utilisez le modèle promesse/avenir pour charger le ProtectionProfile
.
auto profilePromise = std::make_shared<std::promise<std::shared_ptr<ProtectionProfile>>>();
auto profileFuture = profilePromise->get_future();
ProtectionProfile::LoadAsync(profileSettings, profilePromise);
Si nous avons chargé un profil et que cette opération a réussi, ProtectionProfileObserverImpl::OnLoadSuccess
, notre implémentation de mip::ProtectionProfile::Observer::OnLoadSuccess
est appelée. L’objet résultant ou le pointeur d’exception, ainsi que le contexte, sont passés en tant que paramètres à la fonction. Le contexte est un pointeur vers la std::promise
que nous avons créé pour gérer l’opération asynchrone. La fonction définit simplement la valeur de la promesse à l’objet ProtectionProfile (contexte). Lorsque la fonction main utilise Future.get()
, le résultat peut être stocké dans un nouvel objet.
//get the future value and store in profile.
auto profile = profileFuture.get();
Synthèse
Après avoir entièrement implémenté les observateurs et le délégué de l’authentification, il est désormais possible de charger entièrement un profil. L’extrait de code ci-dessous suppose que tous les en-têtes nécessaires sont déjà inclus.
int main()
{
const string userName = "MyTestUser@contoso.com";
const string password = "P@ssw0rd!";
const string clientId = "MyClientId";
mip::ApplicationInfo appInfo {clientId, "APP NAME", "1.2.3" };
std::shared_ptr<mip::MipConfiguration> mipConfiguration = std::make_shared<mip::MipConfiguration>(mAppInfo,
"mip_data",
mip::LogLevel::Trace,
false);
std::shared_ptr<mip::MipContext> mMipContext = mip::MipContext::Create(mipConfiguration);
ProtectionProfile::Settings profileSettings(
mMipContext, // mipContext object
mip::CacheStorageType::OnDisk, // use on disk storage
std::make_shared<ConsentDelegateImpl>(), // new consent delegate
std::make_shared<ProfileObserver>()); // new protection profile observer
auto profilePromise = std::make_shared<promise<shared_ptr<ProtectionProfile>>>();
auto profileFuture = profilePromise->get_future();
ProtectionProfile::LoadAsync(profileSettings, profilePromise);
auto profile = profileFuture.get();
}
Le résultat final est que nous avons correctement chargé le profil et l’avons stocké dans l’objet appelé profile
.
Étapes suivantes
Maintenant que le profil a été ajouté, l’étape suivante consiste à ajouter un moteur au profil.
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour