Een schijfkopie branden
Mastering (branden van een schijf) met IMAPI bestaat uit de volgende stappen:
- Maak een bestandssysteemimage die de mappen en bestanden bevat die naar schijf moeten worden geschreven.
- een schijfrecorder instellen om te communiceren met het optische apparaat.
- Maak een gegevensschrijver en brand de image op schijf.
Zie VBScript-voorbeeldvoor een voorbeeld dat een schijfimage brandt.
Maak een schijfkopie
Een brandwondenafbeelding is een gegevensstroom die klaar is om naar optische media te worden geschreven. De burn image voor ISO9660, Joliet en UDF-indelingen bestaat uit een bestandssysteem van afzonderlijke bestanden en mappen. Het CFileSystemImage object is het bestandssysteemobject dat de bestanden en mappen bevat die op de optische media moeten worden geplaatst. De interface IFileSystemImage biedt toegang tot het bestandssysteemobject en de instellingen.
Nadat u het bestandssysteemobject hebt gemaakt, roept u de IFileSystemImage::CreateFileItem en IFileSystemImage::CreateDirectoryItem methoden aan om respectievelijk de bestands- en mapobjecten te maken. Het bestand en de mapobjecten kunnen worden gebruikt om specifieke details over het bestand en de map op te geven. De gebeurtenishandlermethoden die beschikbaar zijn voor IFileSystemImage kunnen identificeren welk bestand wordt toegevoegd aan de installatiekopie van het bestandssysteem, het aantal sectoren dat al is gekopieerd en het totale aantal te kopiëren sectoren.
U kunt eventueel een opstartkopie aan het bestandssysteem koppelen door gebruik te maken van de eigenschap IFileSystemImage::put_BootImageOptions. Zie voor een voorbeeld Een opstartinstallatiekopie toevoegen.
Roep tot slot IFileSystemImage::CreateResultImage aan om een gegevensstroom te maken en biedt toegang via IFileSystemImageResult-. De nieuwe gegevensstroom kan vervolgens rechtstreeks worden verstrekt aan de IDiscFormat2Data::Write methode of worden opgeslagen in een bestand voor later gebruik.
Een schijfrecorder instellen
De MsftDiscMaster2 object biedt een opsomming van de optische apparaten op het systeem. De interface IDiscMaster2 biedt toegang tot de opsomming van het resulterende apparaat. Doorloop de lijsten om een geschikt opnameapparaat te vinden. Het object MsftDiscMaster2 biedt ook gebeurtenismeldingen wanneer optische apparaten worden toegevoegd aan of verwijderd van een computer.
Nadat u een optische recorder hebt gevonden en de id hebt opgehaald, maakt u een MsftDiscRecorder2 object en initialiseert u de recorder met behulp van de apparaat-id. De IDiscRecorder2 interface biedt toegang tot het recorderobject, evenals enkele basisgegevens van het apparaat, zoals leverancier-id, product-id, productrevisie en methoden om de media uit te werpen en de lade te sluiten.
Een gegevensschrijver maken en de burn-afbeelding schrijven
Het object MsftDiscFormat2Data biedt de schrijfmethode, de eigenschappen over de schrijffunctie en mediaspecifieke eigenschappen. De interface IDiscFormat2Data biedt toegang tot het object MsftDiscFormat2Data.
De schijfrecorder koppelt de formatteerschrijver aan de eigenschap IDiscFormat2Data::put_Recorder. Nadat de recorder is gebonden aan de schrijfbewerking, kunt u query's uitvoeren met betrekking tot de media en schrijfspecifieke eigenschappen bijwerken voordat u de resultaatafbeelding naar schijf schrijft met behulp van de methode IDiscFormat2Data::Write.
Andere interfaces voor het schrijven van formaten die door IMAPI worden geleverd, werken op dezelfde manier; aanvullende formaatbeschrijvingsinterfaces zijn onder andere:
- IDiscFormat2Erase verwijdert herschrijfbare optische media.
- IDiscFormat2RawCD schrijft een onbewerkte afbeelding naar optische media.
- IDiscFormat2TrackAtOnce schrijft audiosporen naar optische media.
Notitie
Het is mogelijk dat een stroomstatusovergang plaatsvindt tijdens een brandbewerking (d.w.v. het afmelden van gebruikers of systeemonderbreking), wat leidt tot onderbreking van het brandproces en mogelijk gegevensverlies. Zie voor programmeeroverwegingen Het voorkomen van afmelden of onderbreken tijdens het branden.
VBScript-voorbeeld
In dit scriptvoorbeeld ziet u hoe u de IMAPI-objecten gebruikt om optische media te branden; schrijf met name een map naar een lege schijf. De code bevat geen foutcontrole en gaat uit van het volgende:
- Er wordt een compatibel schijfapparaat op het systeem geïnstalleerd.
- Het schijfapparaat is het tweede station op het systeem.
- Er wordt een compatibele schijf in het schijfapparaat geplaatst.
- De schijf is leeg.
- Bestanden die naar schijf moeten worden geschreven, bevinden zich in "g:\burndir".
Aanvullende functionaliteit, zoals foutcontrole, apparaat- en mediacompatibiliteit, gebeurtenismeldingen en het berekenen van vrije ruimte op de schijf, kunnen aan dit script worden toegevoegd.
' 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
Verwante onderwerpen
-
IMAPI- gebruiken