Interaction avec IMAPI
Les étapes suivantes décrivent une interaction classique entre une application et IMAPI.
- Créez une instance de MSDiscMasterObj (à l’aide de CoCreateInstance, des pointeurs intelligents à partir d’une importation, etc.) et demandez l’interface IDiscMaster.
- Obtenez l’accès à IMAPI en appelant IDiscMaster::Open. Si cet appel réussit, l’application dispose d’un accès total à toutes les interfaces et méthodes implémentées dans MSDiscMasterObj.
- Récupérez l’énumérateur de format master disque à l’aide d’EnumDiscMasterFormats. Énumérez l’ensemble de formats pris en charge par l’objet master disque, puis sélectionnez le format actif. Les formats retournés par l’énumérateur sont les IID des interfaces pour IJolietDiscMaster et IRedbookDiscMaster.
- Récupérez l’énumérateur d’enregistreur de disques à l’aide d’EnumDiscRecorders. Énumérez la liste des enregistreurs de disques pris en charge (spécifiques au format actif), puis sélectionnez l’enregistreur actif. L’interface IDiscRecorder représente un appareil physique.
- Utilisez IDiscMaster::P rogressAdvise pour vous inscrire aux rappels de progression.
- Utilisez l’interface du format sélectionné pour générer du contenu. Le contenu est généré de façon incrémentielle, de sorte que le contenu des pistes ou des dossiers peut être ajouté à un disque morceau par morceau. La création de ce contenu est appelée mise en lots d’une image. Le contenu de l’image intermédiaire ne peut pas être supprimé de manière incrémentielle (vous ne pouvez pas supprimer une piste qui a été ajoutée), mais il est possible d’effacer le contenu d’une image intermédiaire afin que la préproduction puisse recommencer. Utilisez IDiscMaster::ClearFormatContent pour redémarrer la préproduction.
**Pour l’audio : **
- Utilisez IRedbookDiscMaster::CreateAudioTrack pour indiquer qu’une nouvelle piste audio est en cours de démarrage sur le disque.
- Utilisez IRedbookDiscMaster::AddAudioTrackBlocks pour ajouter des données audio brutes à une piste. L’application peut utiliser GetAvailableAudioTrackBlocks, GetTotalAudioBlocks et GetUsedAudioBlocks pour récupérer des informations statistiques.
- Utilisez IRedbookDiscMaster::CloseAudioTrack pour fermer une piste audio.
- Répétez les étapes 1 à 3 jusqu’à ce que l’espace soit insuffisant ou que toutes les pistes audio aient été écrites.
**Pour les données : **
- Utilisez IJolietDiscMaster::AddData pour ajouter le contenu d’un dossier à l’image. Les éléments d’un dossier sont placés à la racine du fichier image. Utilisez GetTotalDataBlocks et GetUsedDataBlocks pour récupérer des informations statistiques.
- Répétez l’étape ci-dessus jusqu’à ce que l’espace soit insuffisant ou que toutes les données ont été ajoutées.
**Pour tous les disques : **
- Utilisez IDiscMaster::RecordDisc pour enregistrer le disque.
- Fermez la session IMAPI à l’aide de IDiscMaster::Close. La fermeture de la session efface le contenu de la cache du disque.