Udostępnij za pośrednictwem


Wymagania dotyczące aplikacji DRM-Enabled Windows Media

Aby utworzyć aplikację z obsługą usługi Windows Media Digital Rights Management (DRM), musisz mieć nagłówki i biblioteki opisane w ogólne wymagania dotyczące tworzenia aplikacji tego dokumentu. Ponadto aplikacja będzie musiała podać dodatkowe właściwości w informacjach klienta podczas otwierania urządzenia.

W poniższej tabeli opisano dwie dodatkowe właściwości wymagane do włączenia transferów zawartości chronionej za pomocą funkcji DRM w usłudze Windows Media.

Własność Opis
WPD_CLIENT_WMDRM_APPLICATION_PRIVATE_KEY Określa klucz prywatny aplikacji.
WPD_CLIENT_WMDRM_APPLICATION_CERTIFICATE Określa certyfikat aplikacji.

 

Te właściwości należy podać w informacjach klienta aplikacji po otwarciu urządzenia za pomocą metody IPortableDevice::Open. Po podaniu tych właściwości interfejs API WPD zezwala na transfery zawartości chronionej. Jeśli aplikacja dostarczyła certyfikat i klucz prywatny, interfejs API utworzy bezpieczny kanał do transferu chronionej zawartości WMDRM do urządzenia.

Aby uzyskać informacje o tworzeniu i rozpowszechnianiu aplikacji opartych na systemie Windows obsługujących drM systemu Windows, zobacz "Licencjonowanie aplikacji opartych na systemie Windows".

Transferowanie zawartości

Aby przenieść zawartość chronioną przez program WMDRM, użyj IPortableDeviceContent::CreateObjectWithPropertiesAndData. Ta metoda może służyć zarówno do ochrony, jak i czyszczenia zawartości bez dodatkowych opcji. Interfejs API WPD automatycznie wybierze chroniony lub wyczyść kanał w zależności od tego, czy zawartość jest chroniona, czy czy czystą. Interfejsy z dostawcą bezpiecznej zawartości WMDRM do przetwarzania licencji WMDRM.

Transferowanie znanej jasnej zawartości

Jeśli aplikacja została włączona do obsługi chronionej zawartości, ale wiesz, że określony plik nie jest chroniony, możesz poinformować WPD, aby pominąć przetwarzanie DRM, ustawiając opcję WPD_API_OPTION_USE_CLEAR_DATA_STREAM wartość TRUE w danych wejściowych IPortableDeviceValues podczas wywoływania IPortableDeviceContent::CreateObjectWithPropertiesAndData w celu uzyskania jasnej zawartości.

Uzyskiwanie dostępu do operacji pomiaru przy użyciu funkcji IWMDRMDeviceApp

WpD zapewnia mechanizm dostępu do interfejsów API IWMDRMDeviceApp na potrzeby aktualizacji licencji i pobierania danych pomiaru. Aby uzyskać dostęp do tego interfejsu API za pośrednictwem wpD, wywołaj QueryInterface na IID_IWMDRMDeviceApp z IStream zwrócone z IPortableDeviceContent::CreateObjectWithPropertiesAndData. To wystąpienie IWMDRMDeviceApp powiązane z IPortableDevice połączeniem z urządzeniem zgodnym z programem WMDRM, a nie konkretną zawartością, w której uzyskano IStream. WpD wewnętrznie opakowuje interfejsy API pomiaru i udostępnia je aplikacji. Aplikacja powinna używać stałej WMDRMDEVICEAPP_USE_WPD_DEVICE_PTR dla parametru IWMDMDevice* .

Poniżej przedstawiono ten fragment kodu.

IStream*               pDataStream = NULL;

IWMDRMDeviceApp*       pWMDRMApp   = NULL;

  

// ... Initialization 

 

hr = pPortableDeviceContent->CreateObjectWithPropertiesAndData(pValues,

                              &pDataStream,

                              &dwOptimalWriteBufferSize,

                              NULL);

 

// ... Transfer the protected WMDRM content 

pDataStream->Write(pData, cbData, &cbWritten);

 

pDataStream->Commit(0);

 

hr = pDataStream->QueryInterface(IID_IWMDRMDeviceApp, 

                                 (void**)&pWMDRMApp);

 

if (SUCCEEDED(hr))

{

   DWORD dwStatus = 0;

 

   // Call metering operations on the current device using the WPD device pointer

   hr = pWMDRMApp->QueryDeviceStatus((IWMDMDevice *)WMDRMDEVICEAPP_USE_WPD_DEVICE_PTR, 

                                     &dwStatus);

}

Ten sam warunek wstępny z kluczem prywatnym i certyfikatem aplikacji ma zastosowanie również w tym miejscu. Jeśli klucz/certyfikat jest nieprawidłowy lub system WMDRM nie może zainicjować, wywołanie QueryInferface zakończy się niepowodzeniem.

Powyższa metoda uzyskiwania interfejsu IWMDRMDeviceApp z wskaźnika IStream jest tylko wygodą, jeśli aplikacja wykonuje już wcześniej chroniony transfer zawartości, przed kontynuowaniem wykonywania operacji pomiaru użytkowania i synchronizacji licencji.

Naszym zaleceniem dla większości aplikacji, które muszą uzyskać dostęp do IWMDRMDeviceApp jest zainicjowanie IWMDRMDeviceApp bezpośrednio, ponieważ nie wymaga to od aplikacji przeniesienia chronionej zawartości lub wstrzymania do interfejsów transferu w celu przeprowadzenia pomiaru użytkowania urządzeń i synchronizacji licencji. Ta metoda będzie wymagać użycia interfejsów API programu Windows Media Device Manager (WMDM). Aby uzyskać szczegółowe informacje i przykładowy kod, zapoznaj się z oficjalnym dokumentem Uzyskiwanie dostępu do interfejsów API WMDRM z aplikacji WPD w witrynie WHDC.

urządzenia przenośne z systemem Windows