Udostępnij przez


Podstawy aplikacji

[Funkcja skojarzona z tą stroną, windows Media Format 11 SDK, jest starszą funkcją. Został zastąpiony przez Source Reader i składnik zapisywania ujścia . czytnika źródeł i składników zapisywania ujścia zostały zoptymalizowane pod kątem systemów Windows 10 i Windows 11. Firma Microsoft zdecydowanie zaleca, aby nowy kod używał czytnika źródeł i modułu zapisywania ujścia zamiast zestawu SDK windows Media Format 11, jeśli jest to możliwe. Firma Microsoft sugeruje, że istniejący kod, który używa starszych interfejsów API, należy przepisać go do korzystania z nowych interfejsów API, jeśli to możliwe.]

Istnieje pewne dodatkowe przetwarzanie, które należy wykonać dla każdej aplikacji korzystającej z rozszerzonych interfejsów API klienta DRM systemu Windows Media. W tym temacie opisano wymagania dotyczące prostej aplikacji.

Najpierw należy zainicjować rozszerzone interfejsy API klienta DRM systemu Windows Media, wywołując funkcję WMDRMStartup. Obiekty zestawu SDK są obiektami COM, ale nie trzeba wywoływać CoIntialize, ponieważ funkcja WMDRMStatup inicjuje com.

Nuta

Zestaw WINDOWS Media Format SDK używa tylko podzestawu modelu COM, więc jeśli używasz obiektów COM innych niż te w rozszerzonym interfejsie API klienta DRM systemu Windows Media, nadal musisz wywołać metodę CoInitialize.

 

Wszystkie obiekty rozszerzonych interfejsów API klienta DRM systemu Windows Media są tworzone przy użyciu funkcji i metod pomocnika. Aby utworzyć obiekt, nigdy nie trzeba wywoływać CoCreateInstance. Pierwszym interfejsem do utworzenia wystąpienia dla dowolnej aplikacji korzystającej z zestawu SDK jest IWMDRMProvider, którego można użyć do utworzenia wystąpienia wszystkich innych interfejsów podstawowych. Aby uzyskać wystąpienie IWMDRMProvider, należy wywołać WMDRMCreateProvider lub WMDRMCreateProtectedProvider. Różnica między tymi funkcjami polega na tym, że WMDRMCreateProvider tworzy obiekt, który z kolei może tworzyć tylko obiekty, które nie obsługują metod wymagających biblioteki wycinków.

Po wystąpieniu IWMDRMProvidermożna utworzyć inne potrzebne obiekty, wywołując IWMDRMProvider::CreateObject.

Gdy wszystko będzie gotowe do zamknięcia aplikacji, należy zwolnić zasoby podsystemu DRM, wywołując funkcję WMDRMShutdown. Ta funkcja powoduje również zamknięcie modelu COM.

W poniższym przykładzie kodu pokazano, jak zainicjować i zakończyć aplikację korzystającą z rozszerzonych interfejsów API klienta DRM systemu 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();
}

wprowadzenie do