Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Läs in mip::Profile innan du utför några åtgärder i Policy SDK.
Följande två exempel visar hur du skapar objektet profileSettings genom att använda lokal lagring för tillståndslagring eller endast i minnet.
Ladda en profil
När du har definierat MipContext och ProfileObserveranvänder du dem för att instansiera mip::PolicyProfile. För att skapa mip::PolicyProfile objektet krävs mip::PolicyProfile::Settings och mip::MipContext.
Profil::Inställningsparametrar
Konstruktorn PolicyProfile::Settings accepterar följande fyra parametrar:
-
const std::shared_ptr<MipContext>: Objektetmip::MipContextsom initierades för att lagra programinformation, tillståndssökväg osv. -
mip::CacheStorageType: Definierar hur du lagrar tillstånd: I minne, på disk eller på disk och krypterad. Mer information finns i begreppen cachelagring. -
std::shared_ptr<mip::PolicyProfile::Observer> observer: En delad pekare till profilimplementeringenObserver(iPolicyProfile,ProtectionProfileochFileProfile).
Följande två exempel visar hur du skapar objektet profileSettings genom att använda lokal lagring för tillståndslagring eller enbart i minnet.
Lagra endast tillstånd i minnet
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);
PolicyProfile::Settings profileSettings(
mMipContext, // mipContext object
mip::CacheStorageType::InMemory, // use in memory storage
std::make_shared<PolicyProfileObserverImpl>()); // new protection profile observer
Läs-/skrivprofilinställningar från lagringssökväg på disk
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);
PolicyProfile::Settings profileSettings(
mipContext, // mipContext object
mip::CacheStorageType::OnDisk, // use on disk storage
std::make_shared<PolicyProfileObserverImpl>()); // new protection profile observer
Använd sedan mönstret promise/future för att läsa in Profile.
auto profilePromise = std::make_shared<std::promise<std::shared_ptr<Profile>>>();
auto profileFuture = profilePromise->get_future();
Profile::LoadAsync(profileSettings, profilePromise);
Om applikationen laddar en profil korrekt, ProfileObserver::OnLoadSuccess, meddelas implementeringen av mip::Profile::Observer::OnLoadSuccess. SDK:t skickar det resulterande objektet, i det här fallet en mip::Profile, och kontexten som parametrar till observatörsfunktionen.
kontexten är en pekare till den std::promise som skapades för att hantera den asynkrona åtgärden. Funktionen anger värdet för löftet till det profilobjekt som skickades in för den första parametern. När huvudfunktionen använder Future.get()kan den lagra resultatet i ett nytt objekt i den anropande tråden.
//get the future value and store in profile.
auto profile = profileFuture.get();
Sammanfoga
När du har implementerat observatörerna och autentiseringsdelegaten kan du läsa in en profil fullständigt. Följande kodfragment förutsätter att alla nödvändiga huvuden redan ingår.
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);
PolicyProfile::Settings profileSettings(
mMipContext, // mipContext object
mip::CacheStorageType::OnDisk, // use on disk storage
std::make_shared<PolicyProfileObserverImpl>()); // new protection profile observer
auto profilePromise = std::make_shared<promise<shared_ptr<PolicyProfile>>>();
auto profileFuture = profilePromise->get_future();
Profile::LoadAsync(profileSettings, profilePromise);
auto profile = profileFuture.get();
}
Koden läser in profilen och lagrar den i objektet med namnet profile.
Nästa steg
Nu när profilen har lagts till är nästa steg att lägga till en motor i profilen.