Compartilhar via


Noções básicas do aplicativo

Há algum processamento extra que você deve executar para qualquer aplicativo que use as APIs Estendidas do Cliente DRM do Windows Media. Este tópico descreve os requisitos para um aplicativo simples.

Primeiro, você deve inicializar as APIs Estendidas do Cliente DRM do Windows Media chamando a função WMDRMStartup . Os objetos do SDK são objetos COM, mas você não precisa chamar CoIntialize, porque a função WMDRMStatup inicializa COM para você.

Observação

O SDK de Formato de Mídia do Windows usa apenas um subconjunto de COM, portanto, se você usar objetos COM diferentes daqueles na API Estendida do Cliente DRM do Windows Media, você ainda deverá chamar CoInitialize.

 

Todos os objetos das APIs Estendidas do Cliente DRM do Windows Media são criados usando funções auxiliares e métodos. Você nunca precisa chamar CoCreateInstance para criar um objeto. A primeira interface a ser instanciada para qualquer aplicativo que usa o SDK é IWMDRMProvider, que você pode usar para instanciar todas as outras interfaces base. Para obter uma instância de IWMDRMProvider, você deve chamar WMDRMCreateProvider ou WMDRMCreateProtectedProvider. A diferença entre essas funções é que WMDRMCreateProvider cria um objeto que, por sua vez, pode criar apenas objetos que não dão suporte a métodos que exigem a biblioteca stub.

Depois de ter uma instância de IWMDRMProvider, você poderá criar os outros objetos necessários chamando IWMDRMProvider::CreateObject.

Quando estiver pronto para sair do aplicativo, você deverá liberar os recursos do subsistema DRM chamando a função WMDRMShutdown . Essa função também desliga o COM para você.

O exemplo de código a seguir demonstra como inicializar e concluir um aplicativo que usa as APIs Estendidas do Cliente DRM do 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();
}

Introdução