Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Poniższe dwa przykłady pokazują, jak utworzyć obiekt profileSettings, używając pamięci lokalnej do przechowywania stanu lub wyłącznie pamięci.
Ładowanie profilu
Teraz, gdy ProtectionProfileObserverImpl zostało zdefiniowane, użyj go do utworzenia instancji mip::ProtectionProfile.
mip::ProtectionProfile Utworzenie obiektu wymaga elementu mip::ProtectionProfile::Settings.
ProtectionProfile::Settings parameters
-
std::shared_ptr<MipContext>mip::MipContext: obiekt zainicjowany do przechowywania informacji o aplikacji, ścieżki stanu i innych ustawień. -
mip::CacheStorageType: Definiuje sposób przechowywania stanu: w pamięci, na dysku lub na dysku w postaci zaszyfrowanej. -
std::shared_ptr<mip::ConsentDelegate>: współużytkowany wskaźnik klasymip::ConsentDelegate. -
std::shared_ptr<mip::ProtectionProfile::Observer> observer: współdzielony wskaźnik do implementacji profiluObserver(w systemachPolicyProfile,ProtectionProfileiFileProfile).
W poniższych dwóch przykładach pokazano, jak utworzyć obiekt profileSettings, używając pamięci lokalnej do przechowywania stanu lub wyłącznie pamięci.
Przechowywanie stanu tylko w pamięci
mip::ApplicationInfo appInfo {clientId, "APP NAME", "1.2.3" };
std::shared_ptr<mip::MipConfiguration> mipConfiguration = std::make_shared<mip::MipConfiguration>(appInfo,
"mip_data",
mip::LogLevel::Trace,
false, mip::CacheStorageType::OnDisk);
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
Ustawienia profilu do odczytu i zapisu z lokalizacji magazynowania na dysku
mip::ApplicationInfo appInfo {clientId, "APP NAME", "1.2.3" };
std::shared_ptr<mip::MipConfiguration> mipConfiguration = std::make_shared<mip::MipConfiguration>(appInfo,
"mip_data",
mip::LogLevel::Trace,
false, mip::CacheStorageType::OnDisk);
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
Następnie użyj wzorca promise/future, aby załadować element ProtectionProfile.
auto profilePromise = std::make_shared<std::promise<std::shared_ptr<ProtectionProfile>>>();
auto profileFuture = profilePromise->get_future();
ProtectionProfile::LoadAsync(profileSettings, profilePromise);
Jeśli profil zostanie pomyślnie załadowany, SDK wywołuje ProtectionProfileObserverImpl::OnLoadSuccess, implementację mip::ProtectionProfile::Observer::OnLoadSuccess. Zestaw SDK przekazuje wynikowy obiekt lub wskaźnik wyjątku oraz kontekst jako parametry funkcji. Kontekst jest wskaźnikiem do elementu std::promise, utworzonego w celu obsługi operacji asynchronicznej. Funkcja ustawia wartość obietnicy na obiekt ProtectionProfile (kontekst). Gdy funkcja `main` używa Future.get(), można zapisać wynik w nowym obiekcie.
//get the future value and store in profile.
auto profile = profileFuture.get();
Składanie całości
Po zaimplementowaniu obserwatorów i delegata uwierzytelniania można w pełni załadować profil. Poniższy fragment kodu zakłada, że wszystkie niezbędne nagłówki są już uwzględnione.
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>(appInfo,
"mip_data",
mip::LogLevel::Trace,
false, mip::CacheStorageType::OnDisk);
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();
}
Kod ładuje profil i przechowuje go w obiekcie o nazwie profile.
Następne kroki
Teraz, po załadowaniu profilu, następnym krokiem jest dodanie silnika do tego profilu.
Pojęcia dotyczące silnika ochrony
- Zapoznaj się z przykładem zestawu MIP Protection SDK języka C++ w GitHub.