Поделиться через


Основные сведения о приложении

[Функция, связанная с этой страницей, пакет SDK для Windows Media 11, является устаревшей функцией. Он был заменен средства чтения источника и записи приемника. средства чтения источников и записи приемника оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать новый код средства чтения исходного кода и записи приемников вместо пакета SDK для Windows Media 11, когда это возможно. Корпорация Майкрософт предлагает, что существующий код, использующий устаревшие API, будет перезаписан для использования новых API, если это возможно.]

Для любого приложения, использующего расширенные API клиента DRM Windows Media, необходимо выполнить дополнительную обработку. В этом разделе описываются требования для простого приложения.

Сначала необходимо инициализировать расширенные API клиента DRM Windows Media, вызвав функцию WMDRMStartup. Объекты пакета SDK являются COM-объектами, но не требуется вызывать CoIntialize, так как функция WMDRMStatup инициализирует COM.

Заметка

Пакет SDK для формата Windows Media использует только подмножество COM, поэтому если вы используете COM-объекты, отличные от объектов в РАСШИРЕННОМ API клиента DRM Windows Media, необходимо по-прежнему вызывать CoInitialize.

 

Все объекты расширенных API клиента DRM Windows Media создаются с помощью вспомогательных функций и методов. Для создания объекта никогда не требуется вызывать CoCreateInst ance. Первый интерфейс для создания экземпляра для любого приложения, использующего пакет SDK, — это IWMDRMProvider, который можно использовать для создания экземпляров всех остальных базовых интерфейсов. Чтобы получить экземпляр IWMDRMProvider, необходимо вызвать WMDRMCreateProvider или WMDRMCreateProtectedProvider. Разница между этими функциями заключается в том, что WMDRMCreateProvider создает объект, который, в свою очередь, может создавать только объекты, которые не поддерживают методы, требующие библиотеки заглушки.

После экземпляраIWMDRMProvider можно создать другие объекты, необходимые для вызова IWMDRMProvider::CreateObject.

Когда вы готовы выйти из приложения, необходимо освободить ресурсы подсистемы DRM, вызвав функцию WMDRMShutdown. Эта функция также завершает работу COM.

В следующем примере кода показано, как инициализировать и завершить приложение, использующее расширенные API клиента 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();
}

начало работы