Conceptos básicos de la aplicación
Hay algún procesamiento adicional que debe realizar para cualquier aplicación que use las API extendidas del cliente DRM de Windows Media. En este tema se describen los requisitos de una aplicación sencilla.
En primer lugar, debe inicializar las API extendidas del cliente DRM de Windows Media llamando a la función WMDRMStartup . Los objetos del SDK son objetos COM, pero no es necesario llamar a CoIntialize, ya que la función WMDRMStatup inicializa COM automáticamente.
Nota:
El SDK de Windows Media Format usa solo un subconjunto de COM, por lo que si usa objetos COM distintos de los de la API extendida del cliente DRM de Windows Media, debe llamar a CoInitialize.
Todos los objetos de las API extendidas del cliente DRM de Windows Media se crean mediante funciones auxiliares y métodos. Nunca es necesario llamar a CoCreateInstance para crear un objeto. La primera interfaz para crear instancias de cualquier aplicación que use el SDK es IWMDRMProvider, que puede usar para crear una instancia de todas las demás interfaces base. Para obtener una instancia de IWMDRMProvider, debe llamar a WMDRMCreateProvider o WMDRMCreateProtectedProvider. La diferencia entre estas funciones es que WMDRMCreateProvider crea un objeto que, a su vez, puede crear solo objetos que no admitan métodos que requieran la biblioteca de código auxiliar.
Después de tener una instancia de IWMDRMProvider, puede crear los demás objetos que necesita llamando a IWMDRMProvider::CreateObject.
Cuando esté listo para salir de la aplicación, debe liberar los recursos del subsistema DRM llamando a la función WMDRMShutdown . Esta función también apaga COM por usted.
En el ejemplo de código siguiente se muestra cómo inicializar y concluir una aplicación que usa las API extendidas del cliente DRM de 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();
}
Temas relacionados