Protection des fichiers avec DRM version 1
[La fonctionnalité associée à cette page, le Kit de développement logiciel (SDK) Windows Media Format 11, est une fonctionnalité héritée. Il a été remplacé par lecteur source et enregistreur récepteur. Le lecteur source et l’enregistreur récepteur ont été optimisés pour Windows 10 et Windows 11. Microsoft recommande vivement que le nouveau code utilise le lecteur source et l’enregistreur récepteur au lieu du Kit de développement logiciel (SDK) Windows Media Format 11, lorsque cela est possible. Microsoft suggère que le code existant qui utilise les API héritées soit réécrit pour utiliser les nouvelles API si possible.]
Lorsque ce type de protection est appliqué, une licence DRM version 1 valide uniquement sur la machine à partir de laquelle la demande de licence a été effectuée est générée. Étant donné qu’aucune clé ou clé initiale n’est définie, il n’existe aucun moyen de générer des licences portables pour le contenu protégé à l’aide de cette technique. Toutefois, lors de l’utilisation du Kit de développement logiciel (SDK) au format Windows Media 7.1 ou version ultérieure, les licences peuvent être récupérées via le service De migration de licences Microsoft.
Pour protéger les fichiers ASF à l’aide de DRM version 1, procédez comme suit :
Liez le fichier WMStubDRM.lib à votre projet et, si nécessaire, dissociez wmvcore.lib.
Appelez la fonction WMCreateWriter pour créer l’enregistreur. Le premier argument est réservé et doit être défini sur NULL.
Définissez un profil que l’enregistreur doit utiliser en appelant IWMWriter::SetProfile ou IWMWriter::SetProfileByID. Vous devez définir un profil dans l’enregistreur avant de définir des attributs DRM. La gestion des droits numériques est prise en charge uniquement pour les profils qui utilisent les codecs Windows Media Audio ou Windows Media Video.
À l’aide de la méthode IWMHeaderInfo::SetAttribute , définissez les propriétés DRM suivantes. La propriété Use_DRM indique aux composants DRM de protéger le contenu à l’aide de drm version 1. La propriété DRM_Flags spécifie les droits à inclure dans la licence locale qui sera créée pour le contenu. La valeur DRM_LEVEL est également stockée dans la licence ; il spécifie le niveau minimal requis pour accéder au contenu. 150 est le niveau recommandé pour le contenu DRM version 1.
Attribut Valeur Use_DRM TRUE DRM_Flags WMT_RIGHT_PLAYBACK | WMT_RIGHT_COPY_TO_NON_SDMI_DEVICE | WMT_RIGHT_COPY_TO_CD DRM_LEVEL 150
L’exemple de code suivant montre comment créer un enregistreur avec DRM pour DRM version 1 et définir les propriétés DRM. La vérification des erreurs a été omise à des fins de clarification.
BOOL fUseDRM = TRUE;
// These are the rights we will apply to the file. See WMT_RIGHTS for
// the full set of possible rights.
DWORD dwDRMFlags = WMT_RIGHT_PLAYBACK |
WMT_RIGHT_COPY_TO_NON_SDMI_DEVICE |
WMT_RIGHT_COPY_TO_CD;
// Set the minimum required DRM level low enough
// to allow older players to access the content.
DWORD dwDRMLevel = 150;
IWMDRMWriter* pWMDRMWriter = NULL;
HRESULT hr = S_OK;
// Initialize COM.
hr = CoInitialize(NULL);
// Create a writer object.
hr = WMCreateWriter( NULL, &pWMDRMWriter);
// Obtain the IWMHeaderInfo interface.
hr = pWMDRMWriter -> QueryInterface(IID_IWMHeaderInfo,
(void**) &pWMHeaderInfo);
// Tell the SDK runtime to protect the file using DRM version 1.
hr= pWMHeaderInfo-> SetAttribute(0,
g_wszWMUse_DRM,
WMT_TYPE_BOOL,
(BYTE*)&fUseDRM,
sizeof(BOOL));
// Specify the rights that will be stored in the local license that is
// created automatically for the content.
hr= pWMHeaderInfo->SetAttribute( 0,
g_wszWMDRM_Flags,
WMT_TYPE_DWORD,
(BYTE *)&dwDRMFlags,
sizeof(DWORD) );
// Set the DRM_Level attribute in the file's DRM header.
hr= pWMHeaderInfo->SetAttribute( 0,
g_wszWMDRM_Level,
WMT_TYPE_DWORD,
(BYTE *)&dwDRMLevel,
sizeof(DWORD) );