Delen via


Microsoft Information Protection SDK - Beleids-SDK-profielconcepten

De mip::Profile bewerkingen moeten worden geladen voordat beleids-SDK-bewerkingen kunnen worden uitgevoerd.

In de twee onderstaande voorbeelden ziet u hoe u het profileSettings-object maakt met behulp van lokale opslag voor statusopslag en alleen in het geheugen.

Een profiel laden

Nu de MipContext en ProfileObserver zijn gedefinieerd, gebruiken we deze om te instantiëren mip::PolicyProfile. Het maken van het mip::PolicyProfile object vereist mip::PolicyProfile::Settings en mip::MipContext.

Profiel::Instellingenparameters

De PolicyProfile::Settings constructor accepteert vier parameters, die hieronder worden vermeld:

  • const std::shared_ptr<MipContext>: Het mip::MipContext object dat is geïnitialiseerd voor het opslaan van toepassingsgegevens, het statuspad, enzovoort.
  • mip::CacheStorageType: Definieert hoe de status moet worden opgeslagen: In het geheugen, op schijf of op schijf en versleuteld. Zie de cacheopslagconcepten voor meer informatie.
  • std::shared_ptr<mip::PolicyProfile::Observer> observer: Een gedeelde aanwijzer naar de profiel-implementatie Observer (in PolicyProfile, ProtectionProfileen FileProfile).

In de twee onderstaande voorbeelden ziet u hoe u het profileSettings-object maakt met behulp van lokale opslag voor statusopslag en alleen in het geheugen.

Alleen de status opslaan in het geheugen

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

Profielinstellingen lezen/schrijven vanuit het opslagpad op schijf

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

Gebruik vervolgens het promise/future-patroon om de Profile.

auto profilePromise = std::make_shared<std::promise<std::shared_ptr<Profile>>>();
auto profileFuture = profilePromise->get_future();
Profile::LoadAsync(profileSettings, profilePromise);

Als een profiel is geladen, ProfileObserver::OnLoadSuccesswordt onze implementatie mip::Profile::Observer::OnLoadSuccess hiervan op de hoogte gesteld. Het resulterende object, in dit geval een mip::Profile, evenals de context, wordt doorgegeven als parameters aan de waarnemersfunctie.

De context is een aanwijzer naar de std::promise gemaakte om de asynchrone bewerking te verwerken. Met de functie wordt de waarde van de belofte ingesteld op het profielobject dat is doorgegeven voor de eerste parameter. Wanneer de hoofdfunctie gebruikt Future.get(), kan het resultaat worden opgeslagen in een nieuw object in de aanroepende thread.

//get the future value and store in profile.
auto profile = profileFuture.get();

Samenbrengen

Nadat u de waarnemers en verificatiedelegen volledig hebt geïmplementeerd, is het nu mogelijk om een profiel volledig te laden. In het onderstaande codefragment wordt ervan uitgegaan dat alle benodigde headers al zijn opgenomen.

int main()
{
    const string userName = "MyTestUser@consoto.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();
}

Het eindresultaat is dat het profiel is geladen en is opgeslagen in het object met de naam profile.

Volgende stappen

Nu het profiel is toegevoegd, is de volgende stap het toevoegen van een engine aan het profiel.

Concepten van beleidsengines