Compartilhar via


Noções básicas do aplicativo

[O recurso associado a esta página, do SDK do Windows Media Format 11, é um recurso herdado. Foi substituído por de Leitor de Origem e do Gravador do Coletor de. de Leitor de Origem e Gravador do Coletor foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use de Leitor de Origem e o Gravador do Coletor em vez de do SDK do Windows Media Format 11, quando possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]

Há algum processamento extra que você deve executar para qualquer aplicativo que use as APIs Estendidas do Cliente DRM de Mídia do Windows. 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, pois a função WMDRMStatup inicializa COM para você.

Nota

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 de Mídia do Windows, 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 use o SDK é IWMDRMProvider, que você pode usar para criar uma instância de 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 de Mídia do Windows.

#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