Udostępnij przez


Przeprowadzanie indywidualizacji DRM

[Funkcja skojarzona z tą stroną, windows Media Format 11 SDK, jest starszą funkcją. Został zastąpiony przez Czytnik Źródeł i Zapisujący . Czytnik źródła i Rejestrator końcówki zostały zoptymalizowane pod kątem systemów Windows 10 i Windows 11. Firma Microsoft zdecydowanie zaleca, aby nowy kod używał Source Reader i Sink Writer zamiast Windows Media Format 11 SDK, 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.]

Indywidualizowanie to proces aktualizowania składnika DRM na komputerze klienckim, szyfrowania go i tworzenia go unikatowego. Gdy komputer zostanie zdywidualizowany, składnik DRM jest powiązany z komputerem i nie będzie mógł dekodować zawartości na żadnym innym komputerze. Rozszerzone interfejsy API klienta DRM systemu Windows Media zapewniają obsługę indywidualizacji składnika DRM na komputerach klienckich.

Indywidualizacja jest wykonywana przez wywołanie metody IWMDRMSecurity::PerformSecurityUpdate. Można wywołać PerformSecurityUpdate tak, że będzie on indywidualizować tylko wtedy, gdy wersja na serwerze jest nowsza niż zainstalowana na komputerze klienckim, lub można wymusić indywidualizację bez względu na względne wersje zabezpieczeń. Flaga przeznaczona dla indywidualizacji na żądanie to WMDRM_SECURITY_PERFORM_INDIV. Flaga wymuszonej indywidualizacji jest WMDRM_SECURITY_PERFORM_FORCE_INDIV.

PerformSecurityUpdate jest asynchronicznym wywołaniem. Funkcja szybko się zakończy, a następnie zostaną wygenerowane zdarzenia w celu udostępnienia informacji o stanie procesu indywidualizacji. Większość wygenerowanych zdarzeń będzie MEWMDRMIndividualizationProgress zdarzenia, a każde z nich ma przypisany interfejs IWMDRMIndividualizationStatus. Aby uzyskać interfejs stanu, należy wywołać IMFMediaEvent::GetValue, aby pobrać wskaźnik IUnknown znajdujący się na tym samym obiekcie, a następnie wykonać zapytanie o IWMDRMIndividualizationStatus.

Dane dla struktury WM_INDIVIDUALIZE_STATUS można uzyskać, wywołując IWMDRMIndividualizeStatus::GetStatus. Każde wygenerowane zdarzenie ma własny obiekt ze stanem, dlatego należy przejść przez proces pobierania wartości zdarzenia i wykonywania zapytań dotyczących interfejsu stanu za każdym razem.

W zależności od rozmiaru pobierania mogą istnieć dziesiątki lub setki MEWMDRMIndividualizationProgress zdarzeń. Po zakończeniu procesu indywidualizacji generowane jest zdarzenie MEWMDRMIndividualizationCompleted.

Po zakończeniu indywidualizacji jedynymi istniejącymi obiektami, które będą odzwierciedlać nowy stan zdywidualizowany, są te, które dziedziczą z IWMDRMSecurity. Wszystkie inne istniejące obiekty nie zostaną zaktualizowane. Należy zwolnić i ponownie utworzyć wszystkie inne obiekty, aby odzwierciedlały nowy zdywidualizowany stan.

przykład indywidualizacji DRM

Przewodnik programowania

Korzystanie z modelu zdarzeń Media Foundation

Najlepsze rozwiązania dotyczące indywidualizacji drm w usłudze Windows Media