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.
Tematy pokrewne