Partager via


Concepts de base de l’application

Vous devez effectuer un traitement supplémentaire pour toute application qui utilise les API étendues du client DRM Windows Media. Cette rubrique décrit la configuration requise pour une application simple.

Tout d’abord, vous devez initialiser les API étendues du client DRM Windows Media en appelant la fonction WMDRMStartup . Les objets du Kit de développement logiciel (SDK) sont des objets COM, mais vous n’avez pas besoin d’appeler CoIntialize, car la fonction WMDRMStatup initialise COM pour vous.

Notes

Le Kit de développement logiciel (SDK) de format Windows Media utilise uniquement un sous-ensemble de COM. Par conséquent, si vous utilisez des objets COM autres que ceux de l’API étendue du client DRM Windows Media, vous devez toujours appeler CoInitialize.

 

Tous les objets des API étendues du client DRM Windows Media sont créés à l’aide de fonctions et de méthodes d’assistance. Vous n’avez jamais besoin d’appeler CoCreateInstance pour créer un objet. La première interface à instancier pour toute application qui utilise le SDK est IWMDRMProvider, que vous pouvez utiliser pour instancier toutes les autres interfaces de base. Pour obtenir une instance d’IWMDRMProvider, vous devez appeler WMDRMCreateProvider ou WMDRMCreateProtectedProvider. La différence entre ces fonctions est que WMDRMCreateProvider crée un objet qui peut à son tour créer uniquement des objets qui ne prennent pas en charge les méthodes qui nécessitent la bibliothèque stub.

Une fois que vous avez une instance d’IWMDRMProvider, vous pouvez créer les autres objets dont vous avez besoin en appelant IWMDRMProvider::CreateObject.

Lorsque vous êtes prêt à quitter votre application, vous devez libérer les ressources du sous-système DRM en appelant la fonction WMDRMShutdown . Cette fonction arrête également COM pour vous.

L’exemple de code suivant montre comment initialiser et conclure une application qui utilise les API étendues du client DRM Windows Media.

#include <wmdrmsdk.h>
// TODO: Include other headers here as needed.

// This example demonstrates the code required in a single, simple
// main function. You will most likely break this code up into appropriate
// functions.
void main(void)
{
    HRESULT hr = S_OK;

    IWMDRMProvider*     pProvider     = NULL;
    // For the sake of example, this code will instantiate the
    //  IWMDRMLicenseQuery interface. The process is the same for the
    //  other base interfaces.
    IWMDRMLicenseQuery* pLicenseQuery = NULL;

    // Initialize the DRM subsystem.
    hr = WMDRMStartup();

    // Create a provider object, that can be used to create the other
    //  objects.
    if (SUCCEEDED(hr))
    {
        hr = WMDRMCreateProvider(&pProvider);
    }

    if(SUCCEEDED(hr))
    {
        hr = pProvider->CreateObject(
            IID_IWMDRMLicenseQuery, 
            (void**)&pLicenseQuery);
    }

    // TODO: Use the methods of IWMDRMLicenseQuery as required.

    // Cleanup and shutdown.
    SAFE_RELEASE(pLicenseQuery);
    SAFE_RELEASE(pProvider);

    hr = WMDRMShutdown();
}

Prise en main