Gravure d’une image disque
Le mastering (gravure d’un disque) à l’aide d’IMAPI comprend les étapes suivantes :
- Construisez une image de système de fichiers qui contient les répertoires et les fichiers à écrire sur disque.
- Configurez un enregistreur de disque pour communiquer avec l’appareil optique.
- Créez un enregistreur de données et gravez l’image sur un disque.
Pour obtenir un exemple qui grave une image de disque, consultez Exemple VBScript.
Créer une image gravée
Une image gravée est un flux de données prêt à être écrit sur un support optique. L’image gravée pour les formats ISO9660, Joliet et UDF se compose d’un système de fichiers et de répertoires individuels. L’objet CFileSystemImage est l’objet de système de fichiers qui contient les fichiers et les répertoires à placer sur le support optique. L’interface IFileSystemImage permet d’accéder à l’objet et aux paramètres du système de fichiers.
Après avoir créé l’objet système de fichiers, appelez les méthodes IFileSystemImage::CreateFileItem et IFileSystemImage::CreateDirectoryItem pour créer les objets de fichier et de répertoire, respectivement. Les objets fichier et répertoire peuvent être utilisés pour fournir des détails spécifiques sur le fichier et le répertoire. Les méthodes de gestionnaire d’événements disponibles pour IFileSystemImage peuvent identifier le fichier actuel ajouté à l’image du système de fichiers, le nombre de secteurs déjà copiés et le nombre total de secteurs à copier.
Vous pouvez éventuellement attacher une image de démarrage au système de fichiers à l’aide de la propriété IFileSystemImage::p ut_BootImageOptions . Pour obtenir un exemple, consultez Ajout d’une image de démarrage.
Enfin, appelez IFileSystemImage::CreateResultImage pour créer un flux de données et fournir l’accès via IFileSystemImageResult. Le nouveau flux de données peut ensuite être fourni directement à la méthode IDiscFormat2Data::Write ou être enregistré dans un fichier pour une utilisation ultérieure.
Configurer un enregistreur de disque
L’objet MsftDiscMaster2 fournit une énumération des appareils optiques sur le système. L’interface IDiscMaster2 permet d’accéder à l’énumération d’appareil résultante. Parcourez les énumérations pour localiser un périphérique d’enregistrement approprié. L’objet MsftDiscMaster2 fournit également des notifications d’événements lorsque des appareils optiques sont ajoutés ou supprimés d’un ordinateur.
Après avoir trouvé un enregistreur optique et récupéré son ID, créez un objet MsftDiscRecorder2 et initialisez l’enregistreur à l’aide de l’ID d’appareil. L’interface IDiscRecorder2 permet d’accéder à l’objet enregistreur ainsi qu’à certaines informations de base sur l’appareil, telles que l’ID du fournisseur, l’ID de produit, la révision du produit et les méthodes permettant d’éjecter le média et de fermer la barre d’état.
Créer un enregistreur de données et écrire l’image gravée
L’objet MsftDiscFormat2Data fournit la méthode d’écriture, les propriétés relatives à la fonction d’écriture et les propriétés spécifiques au média. L’interface IDiscFormat2Data permet d’accéder à l’objet MsftDiscFormat2Data.
L’enregistreur de disque est lié au enregistreur de format à l’aide de la propriété IDiscFormat2Data::p ut_Recorder . Une fois que l’enregistreur est lié au enregistreur de format, vous pouvez effectuer des requêtes concernant le média et mettre à jour des propriétés spécifiques à l’écriture avant d’écrire l’image de résultat sur un disque à l’aide de la méthode IDiscFormat2Data::Write .
Les autres interfaces d’écriture de format fournies par IMAPI fonctionnent de la même façon ; Les interfaces d’écriture de format supplémentaires incluent :
- IDiscFormat2Erase efface le support optique réinscriptible.
- IDiscFormat2RawCD écrit une image brute sur un support optique.
- IDiscFormat2TrackAtOnce écrit des pistes audio sur un support optique.
Notes
Il est possible qu’une transition d’état d’alimentation se produise pendant une opération de combustion (c’est-à-dire la déconnexion de l’utilisateur ou la suspension du système), ce qui entraîne l’interruption du processus de gravure et une perte de données possible. Pour plus d’informations sur la programmation, consultez Prévention de la déconnexion ou de la suspension pendant une gravure.
Exemple VBScript
Cet exemple de script montre comment utiliser les objets IMAPI pour graver un support optique ; plus spécifiquement, écrivez un répertoire sur un disque vide. Le code ne contient aucune vérification des erreurs et suppose ce qui suit :
- Un périphérique à disque compatible est installé sur le système.
- Le périphérique à disque est le deuxième lecteur sur le système.
- Un disque compatible est inséré dans le périphérique à disque.
- Le disque est vide.
- Les fichiers à écrire sur le disque se trouvent dans « g:\burndir ».
Des fonctionnalités supplémentaires telles que la vérification des erreurs, la compatibilité des appareils et des médias, la notification d’événement et le calcul de l’espace libre sur le disque peuvent être ajoutées à ce script.
' This script burns data files to disc in a single session
' using files from a single directory tree.
' Copyright (C) Microsoft Corp. 2006
Option Explicit
' *** CD/DVD disc file system types
Const FsiFileSystemISO9660 = 1
Const FsiFileSystemJoliet = 2
Const FsiFileSystemUDF102 = 4
WScript.Quit(Main)
Function Main
Dim Index ' Index to recording drive.
Dim Recorder ' Recorder object
Dim Path ' Directory of files to burn
Dim Stream ' Data stream for burning device
Index = 1 ' Second drive on the system
Path = "g:\BurnDir" ' Files to transfer to disc
' Create a DiscMaster2 object to connect to optical drives.
Dim g_DiscMaster
Set g_DiscMaster = WScript.CreateObject("IMAPI2.MsftDiscMaster2")
' Create a DiscRecorder object for the specified burning device.
Dim uniqueId
set recorder = WScript.CreateObject("IMAPI2.MsftDiscRecorder2")
uniqueId = g_DiscMaster.Item(index)
recorder.InitializeDiscRecorder( uniqueId )
' Create an image stream for a specified directory.
Dim FSI ' Disc file system
Dim Dir ' Root directory of the disc file system
Dim dataWriter
' Create a new file system image and retrieve root directory
Set FSI = CreateObject("IMAPI2FS.MsftFileSystemImage")
Set Dir = FSI.Root
'Create the new disc format and set the recorder
Set dataWriter = CreateObject ("IMAPI2.MsftDiscFormat2Data")
dataWriter.recorder = Recorder
dataWriter.ClientName = "IMAPIv2 TEST"
FSI.ChooseImageDefaults(recorder)
' Add the directory and its contents to the file system
Dir.AddTree Path, false
' Create an image from the file system
Dim result
Set result = FSI.CreateResultImage()
Stream = result.ImageStream
' Write stream to disc using the specified recorder.
WScript.Echo "Writing content to disc..."
dataWriter.write(Stream)
WScript.Echo "----- Finished writing content -----"
Main = 0
End Function
Rubriques connexes