Brennen eines Datenträgerimages
Das Mastering (Brennen eines Datenträgers) mit IMAPI besteht aus den folgenden Schritten:
- Erstellen Sie ein Dateisystemimage, das die Verzeichnisse und Dateien zum Schreiben des Datenträgers enthält.
- Richten Sie einen Discrecorder für die Kommunikation mit dem optischen Gerät ein.
- Erstellen Sie einen Datenschreiber, und brennen Sie das Image auf einen Datenträger.
Ein Beispiel zum Brennen eines Datenträgerimages finden Sie unter VBScript-Beispiel.
Erstellen eines Brennimages
Ein brennfähiges Bild ist ein Datenstrom, der auf optische Medien geschrieben werden kann. Das Brennimage für die Formate ISO9660, Joliet und UDF besteht aus einem Dateisystem aus einzelnen Dateien und Verzeichnissen. Das CFileSystemImage-Objekt ist das Dateisystemobjekt, das die Dateien und Verzeichnisse enthält, die auf den optischen Medien platziert werden sollen. Die IFileSystemImage-Schnittstelle ermöglicht den Zugriff auf das Dateisystemobjekt und die Einstellungen.
Rufen Sie nach dem Erstellen des Dateisystemobjekts die Methoden IFileSystemImage::CreateFileItem und IFileSystemImage::CreateDirectoryItem auf, um die Datei- bzw. Verzeichnisobjekte zu erstellen. Die Datei- und Verzeichnisobjekte können verwendet werden, um bestimmte Details zur Datei und zum Verzeichnis bereitzustellen. Die für IFileSystemImage verfügbaren Ereignishandlermethoden können die aktuelle Datei, die dem Dateisystemimage hinzugefügt wird, die Anzahl der bereits kopierten Sektoren und die Gesamtzahl der zu kopierenden Sektoren identifizieren.
Optional kann ein Startimage mithilfe der Eigenschaft IFileSystemImage::p ut_BootImageOptions an das Dateisystem angefügt werden. Ein Beispiel finden Sie unter Hinzufügen eines Startimages.
Rufen Sie schließlich IFileSystemImage::CreateResultImage auf, um einen Datenstrom zu erstellen und den Zugriff über IFileSystemImageResult zu gewähren. Der neue Datenstrom kann dann direkt an die IDiscFormat2Data::Write-Methode bereitgestellt oder zur späteren Verwendung in einer Datei gespeichert werden.
Einrichten eines DiscRecorders
Das MsftDiscMaster2-Objekt stellt eine Enumeration der optischen Geräte im System bereit. Die IDiscMaster2-Schnittstelle ermöglicht den Zugriff auf die resultierende Geräteaufzählung. Durchlaufen Sie die Enumerationen, um ein geeignetes Aufzeichnungsgerät zu finden. Das MsftDiscMaster2-Objekt stellt auch Ereignisbenachrichtigungen bereit, wenn optische Geräte einem Computer hinzugefügt oder von diesem gelöscht werden.
Nachdem Sie einen optischen Rekorder gefunden und dessen ID abgerufen haben, erstellen Sie ein MsftDiscRecorder2-Objekt , und initialisieren Sie den Rekorder mithilfe der Geräte-ID. Die IDiscRecorder2-Schnittstelle bietet Zugriff auf das Recorder-Objekt sowie einige grundlegende Geräteinformationen wie Anbieter-ID, Produkt-ID, Produktrevision und Methoden zum Auswerfen des Mediums und Schließen des Trays.
Erstellen eines Datenschreibers und Schreiben des Brennbilds
Das MsftDiscFormat2Data-Objekt stellt die Schreibmethode, die Eigenschaften zur Schreibfunktion und medienspezifische Eigenschaften bereit. Die IDiscFormat2Data-Schnittstelle ermöglicht den Zugriff auf das MsftDiscFormat2Data-Objekt .
Der Discrecorder verknüpft mithilfe der Eigenschaft IDiscFormat2Data::p ut_Recorder mit dem Formatschreiber . Nachdem der Rekorder an den Formatschreiber gebunden ist, können Sie Abfragen zu den Medien ausführen und schreibspezifische Eigenschaften aktualisieren, bevor Sie das Ergebnisimage mithilfe der IDiscFormat2Data::Write-Methode auf den Datenträger schreiben.
Andere Formatschreibschnittstellen, die von IMAPI bereitgestellt werden, funktionieren ähnlich. Weitere Formatschreibschnittstellen sind:
- IDiscFormat2Erase löscht wieder beschreibbare optische Medien.
- IDiscFormat2RawCD schreibt ein Rohbild auf optische Medien.
- IDiscFormat2TrackAtOnce schreibt Audiospuren auf optische Medien.
Hinweis
Es ist möglich, dass während eines Brennvorgangs (z. B. Benutzerabmeldung oder Systemunterbrechung) ein Energiezustandsübergang stattfindet, der zu einer Unterbrechung des Brennvorgangs und einem möglichen Datenverlust führt. Programmierüberlegungen finden Sie unter Verhindern von Abmeldung oder Anhalten während eines Brennvorgangs.
VBScript-Beispiel
In diesem Skriptbeispiel wird gezeigt, wie die IMAPI-Objekte zum Brennen von optischen Medien verwendet werden. Schreiben Sie insbesondere ein Verzeichnis auf einen leeren Datenträger. Der Code enthält keine Fehlerüberprüfung und setzt Folgendes voraus:
- Auf dem System ist ein kompatibles Datenträgergerät installiert.
- Das Datenträgergerät ist das zweite Laufwerk im System.
- Ein kompatibler Datenträger wird in das Datenträgergerät eingefügt.
- Der Datenträger ist leer.
- Dateien, die auf den Datenträger geschrieben werden sollen, befinden sich in "g:\burndir".
Zusätzliche Funktionen wie Fehlerüberprüfung, Geräte- und Medienkompatibilität, Ereignisbenachrichtigungen und berechnen des freien Speicherplatzes auf dem Datenträger können diesem Skript hinzugefügt werden.
' 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
Zugehörige Themen