Funzioni e interfacce DRM

I componenti del driver di sistema Drmk.sys e Portcls.sys implementano una raccolta di funzioni e interfacce DRM usate dai driver per la gestione dei diritti digitali del contenuto audio in streaming kernel. Il componente Drmk.sys implementa diverse funzioni DrmXxx e Portcls.sys implementa un set specifico di funzioni PcXxx e anche le interfacce IDrmPort e IDrmPort2 .

Sono disponibili le funzioni DRM seguenti:

DrmAddContentHandlers

Fornisce al sistema un'interfaccia driver costituita da un elenco di funzioni per la gestione del contenuto protetto. DrmCreateContentMixed

Crea un ID contenuto DRM per identificare un flusso audio KS contenente contenuto misto da diversi flussi di input. DrmDestroyContent

Elimina un ID contenuto DRM. DrmForwardContentToDeviceObject

Autentica un driver e lo invia all'ID contenuto DRM e ai diritti di contenuto assegnati dal sistema a un flusso contenente contenuto protetto. DrmForwardContentToFileObject

Funzione obsoleta. DrmForwardContentToInterface

Autentica un oggetto driver e lo invia all'ID contenuto DRM e ai diritti di contenuto assegnati dal sistema a un flusso contenente contenuto protetto. DrmGetContentRights

Recupera i diritti di contenuto DRM assegnati dal sistema a un ID contenuto DRM. Le funzioni in questo elenco vengono dichiarate nel file di intestazione Drmk.h. Il driver di sistema DRMK in modalità kernel, Drmk.sys, esporta i punti di ingresso per queste funzioni.

In Windows XP e versioni successive, il driver di sistema PortCls, Portcls.sys, esporta un set diverso di punti di ingresso per lo stesso set di funzioni DRM. I nomi delle funzioni PortCls sono simili a quelli dell'elenco precedente, ad eccezione del fatto che usano il prefisso Pc anziché Drm:

PcAddContentHandlers

PcCreateContentMixed

PcDestroyContent

PcForwardContentToDeviceObject

PcForwardContentToFileObject

PcForwardContentToInterface

PcGetContentRights

Questi nomi di funzione vengono dichiarati nel file di intestazione Portcls.h. I punti di ingresso in Portcls.sys non fanno altro che chiamare le funzioni corrispondenti in Drmk.sys. I punti di ingresso PortCls vengono forniti semplicemente per praticità, in modo che un driver audio già connesso a Portcls.sys non debba caricare in modo esplicito Drmk.sys.

In Windows XP e versioni successive, lo stesso set di funzioni viene esposto anche come metodi nelle interfacce IDrmPort e IDrmPort2 :

IDrmPort2::AddContentHandlers

IDrmPort::CreateContentMixed

IDrmPort::D estroyContent

IDrmPort2::ForwardContentToDeviceObject

IDrmPort::ForwardContentToFileObject

IDrmPort::ForwardContentToInterface

IDrmPort::GetContentRights

Le interfacce IDrmPort e IDrmPort2 vengono dichiarate nel file di intestazione Portcls.h e vengono implementate in Portcls.sys. Questi metodi non fanno altro che chiamare le funzioni corrispondenti in Drmk.sys. Un driver miniport ottiene un riferimento a un'interfaccia IDrmPortx eseguendo una query sul driver di porta per questa interfaccia. Il vantaggio di usare un'interfaccia IDrmPortx anziché le funzioni DrmXxx o PcXxx corrispondenti consiste nel fatto che il driver può usare questa query per determinare in fase di esecuzione se la versione del sistema operativo supporta o meno DRM. Ciò semplifica l'attività di scrittura di un singolo driver che può essere eseguito sia nelle versioni più recenti di Windows che supportano DRM che nelle versioni precedenti che non lo fanno. IDrmPort2 è derivato da IDrmPort e fornisce due metodi aggiuntivi.

I driver di porta WaveCyclic e WavePci usano l'interfaccia IDrmAudioStream se è supportata dal driver miniport corrispondente. Il driver di porta chiama il metodo IDrmAudioStream::SetContentId per assegnare la protezione DRM al contenuto digitale in un flusso audio.

La macro DEFINE_DRMRIGHTS_DEFAULT , definita nel file di intestazione Drmk.h, inizializza i membri di una struttura DRMRIGHTS sui valori predefiniti.