Requisiti per le applicazioni di DRM-Enabled Windows Media
Per creare un'applicazione abilitata per Windows Media Digital Rights Management (DRM), è necessario disporre delle intestazioni e delle librerie descritte nella sezione Requisiti generali per lo sviluppo di applicazioni di questo documento. Inoltre, l'applicazione dovrà fornire proprietà aggiuntive nelle informazioni client quando si apre il dispositivo.
Le due proprietà aggiuntive necessarie per abilitare i trasferimenti di contenuti protetti 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 il contenuto WMDRM protetto nel dispositivo.
Per informazioni sulla creazione e la distribuzione di applicazioni basate su Windows che supportano WINDOWS Media DRM, vedere "Licenze di applicazioni basate su Windows".
Trasferimento del contenuto
Per trasferire contenuto protetto WMDRM, usare IPortableDeviceContent::CreateObjectWithPropertiesAndData. Questo metodo può essere usato sia per il contenuto protetto che per il contenuto chiaro senza opzioni aggiuntive. L'API WPD seleziona automaticamente il canale protetto o deselezionato 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 chiaro 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 WPD_API_OPTION_USE_CLEAR_DATA_STREAM opzione su TRUE nell'input IPortableDeviceValues quando si chiama IPortableDeviceContent::CreateObjectWithPropertiesAndData per il contenuto chiaro.
Accesso alle operazioni di misurazione tramite IWMDRMDeviceApp
WPD fornisce un meccanismo per accedere alle API IWMDRMDeviceApp per gli aggiornamenti delle licenze e il rilevamento dei dati. Per accedere a questa API tramite WPD, chiamare QueryInterface in IID_IWMDRMDeviceAppdall'IStream restituito da IPortableDeviceContent::CreateObjectWithPropertiesAndData. Questa istanza di IWMDRMDeviceApp associata alla connessione IPortableDevice al dispositivo compatibile con WMDRM e non al contenuto specifico in cui è stato ottenuto IStream . WPD esegue il wrapping interno 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 chiamata QueryInferface avrà esito negativo.
Il metodo precedente per acquisire l'interfaccia IWMDRMDeviceApp dal puntatore IStream è solo una praticità 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 maggior parte delle applicazioni che devono accedere a IWMDRMDeviceApp consiste nell'inizializzare IWMDRMDeviceApp direttamente perché questa operazione non richiede all'applicazione di trasferire contenuto protetto o conservare le interfacce di trasferimento per eseguire la sincronizzazione dei dispositivi e della licenza. Questo metodo richiederà l'utilizzo delle API di Windows Media Gestione dispositivi (WMDM). Per informazioni dettagliate e codice di esempio, vedere l'articolo Accesso alle API WMDRM da un white paper dell'applicazione WPD nel sito WHDC.
Argomenti correlati