Partager via


Principes de base de l’application

[La fonctionnalité associée à cette page, sdk Windows Media Format 11, est une fonctionnalité héritée. Il a été remplacé par lecteur source et enregistreur récepteur. lecteur source et enregistreur récepteur ont été optimisés pour Windows 10 et Windows 11. Microsoft recommande vivement que le nouveau code utilise lecteur source et enregistreur récepteur au lieu d'SDK Windows Media Format 11, lorsque cela est possible. Microsoft suggère que le code existant qui utilise les API héritées soit réécrit pour utiliser les nouvelles API si possible.]

Il existe un traitement supplémentaire que vous devez effectuer pour toute application qui utilise les API étendues du client DRM Windows Media. Cette rubrique décrit les conditions requises 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.

Note

Le Kit de développement logiciel (SDK) Windows Media Format 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 d’assistance et de méthodes. Vous n’avez jamais besoin d’appeler CoCreateInstance pour créer un objet. La première interface à instancier pour n’importe quelle application qui utilise le Kit de développement logiciel (SDK) est IWMDRMProvider, que vous pouvez utiliser pour instancier toutes les autres interfaces de base. Pour obtenir une instance de 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 de 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