Condividi tramite


Requisiti per le applicazioni windows Media DRM-Enabled

Per creare un'applicazione abilitata per Drm (Windows Media Digital Rights Management), è necessario disporre delle intestazioni e delle raccolte descritte nella sezione Requisiti generali per lo sviluppo di applicazioni di questo documento. Inoltre, l'applicazione dovrà fornire proprietà aggiuntive nelle informazioni del client all'apertura del dispositivo.

Le due proprietà aggiuntive necessarie per abilitare i trasferimenti di contenuto protetto da DRM di Windows Media sono descritte nella tabella seguente.

Proprietà Descrizione
WPD_CLIENT_WMDRM_APPLICATION_PRIVATE_KEY Specifica la chiave privata dell'applicazione.
WPD_CLIENT_WMDRM_APPLICATION_CERTIFICATE Specifica il certificato dell'applicazione.

 

Queste proprietà devono essere fornite nelle informazioni client dell'applicazione quando il dispositivo viene aperto con il metodo IPortableDevice::Open. Quando vengono fornite queste proprietà, l'API WPD consente trasferimenti di contenuto protetti. Se l'applicazione ha fornito un certificato e una chiave privata, l'API creerà un canale sicuro per trasferire contenuto WMDRM protetto nel dispositivo.

Per informazioni sulla creazione e la distribuzione di applicazioni basate su Windows che supportano DRM di Windows Media, vedere "Licenze di applicazioni basate su Windows".

Trasferimento del contenuto

Per trasferire il contenuto protetto da WMDRM, usare IPortableDeviceContent::CreateObjectWithPropertiesAndData. Questo metodo può essere usato sia per il contenuto protetto che per il contenuto non crittografato senza opzioni aggiuntive. L'API WPD selezionerà automaticamente il canale protetto o non crittografato a seconda che il contenuto sia protetto o deselezionato. Si interfaccia con il provider di contenuto sicuro WMDRM per elaborare le licenze WMDRM.

Trasferimento di contenuto non crittografato noto

Se l'applicazione è stata abilitata per gestire il contenuto protetto, ma si sa che un file specifico non è protetto, è possibile indicare a WPD di ignorare l'elaborazione DRM impostando l'opzione WPD_API_OPTION_USE_CLEAR_DATA_STREAM su TRUE nell'input IPortableDeviceValues quando si chiama IPortableDeviceContent::CreateObjectWithPropertiesAndData per contenuti chiari.

Accesso alle operazioni di misurazione tramite IWMDRMDeviceApp

WPD fornisce un meccanismo per accedere alle API di IWMDRMDeviceApp per gli aggiornamenti delle licenze e il recupero dei dati di misurazione. Per accedere a questa API tramite WPD, chiamare QueryInterface su IID_IWMDRMDeviceApp dal IStream restituito da IPortableDeviceContent::CreateObjectWithPropertiesAndData. Questa istanza IWMDRMDeviceApp associata alla connessione IPortableDevice al dispositivo compatibile con WMDRM e non al contenuto specifico in cui è stato ottenuto il IStream. WPD esegue internamente il wrapping delle API di misurazione e lo rende accessibile all'applicazione. L'applicazione deve usare la costante WMDRMDEVICEAPP_USE_WPD_DEVICE_PTR per il parametro IWMDMDevice* .

Il frammento di codice seguente illustra questa operazione.

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);

}

Lo stesso prerequisito con la chiave privata dell'applicazione e il certificato si applicano anche qui. Se la chiave/certificato non è valida o se il sistema WMDRM non riesce a inizializzare, la QueryInferface chiamata avrà esito negativo.

Il metodo precedente per acquisire l'interfaccia IWMDRMDeviceApp dal puntatore IStream è sufficiente se l'applicazione sta già eseguendo un trasferimento di contenuto protetto precedente, prima di procedere per eseguire operazioni di misurazione e sincronizzazione delle licenze.

La raccomandazione per la maggior parte delle applicazioni che devono accedere a IWMDRMDeviceApp consiste nell'inizializzare IWMDRMDeviceApp direttamente perché non richiede all'applicazione di trasferire contenuto protetto o tenere premuto le interfacce di trasferimento per eseguire la misurazione e la sincronizzazione delle licenze dei dispositivi. Questo metodo richiederà l'utilizzo delle API di Gestione dispositivi Multimediali Windows (WMDM). Per informazioni dettagliate e codice di esempio, vedere l'Accesso alle API WMDRM da un'applicazione WPD white paper nel sito WHDC.

dispositivi portatili Windows