Masterizzazione di un'immagine disco

Il mastering (masterizzazione di un disco) tramite IMAPI è costituito dalla procedura seguente:

  1. Creare un'immagine del file system che contiene le directory e i file da scrivere su disco.
  2. Configurare un registratore di dischi per comunicare con il dispositivo ottico.
  3. Creare un writer di dati e masterizzare l'immagine su disco.

Per un esempio che brucia un'immagine disco, vedere l'esempio VBScript.

Costruire un'immagine di masterizzazione

Un'immagine di masterizzazione è un flusso di dati pronto per essere scritto in supporti ottici. L'immagine di masterizzazione per i formati ISO9660, Joliet e UDF è costituita da un file system di singoli file e directory. L'oggetto CFileSystemImage è l'oggetto file system che contiene i file e le directory da inserire sul supporto ottico. L'interfaccia IFileSystemImage fornisce l'accesso all'oggetto e alle impostazioni del file system.

Dopo aver creato l'oggetto file system, chiamare rispettivamente i metodi IFileSystemImage::CreateFileItem e IFileSystemImage::CreateDirectoryItem per creare rispettivamente i file e gli oggetti directory. Gli oggetti file e directory possono essere usati per fornire dettagli specifici sul file e sulla directory. I metodi del gestore eventi disponibili per IFileSystemImage possono identificare il file corrente aggiunto all'immagine del file system, il numero di settori già copiati e il numero totale di settori da copiare.

Facoltativamente, un'immagine di avvio può essere collegata al file system usando la proprietà IFileSystemImage::p ut_BootImageOptions . Per un esempio, vedere Aggiunta di un'immagine di avvio.

Infine, chiamare IFileSystemImage::CreateResultImage per creare un flusso di dati e fornire l'accesso tramite IFileSystemImageResult. Il nuovo flusso di dati può quindi essere fornito direttamente al metodo IDiscFormat2Data::Write o salvato in un file per un uso successivo.

Configurare un registratore di dischi

L'oggetto MsftDiscMaster2 fornisce un'enumerazione dei dispositivi ottici nel sistema. L'interfaccia IDiscMaster2 fornisce l'accesso all'enumerazione del dispositivo risultante. Attraversa le enumerazioni per individuare un dispositivo di registrazione appropriato. L'oggetto MsftDiscMaster2 fornisce anche notifiche evento quando i dispositivi ottici vengono aggiunti o eliminati da un computer.

Dopo aver trovato un registratore ottico e recuperato il relativo ID, creare un oggetto MsftDiscRecorder2 e inizializzare il registratore usando l'ID dispositivo. L'interfaccia IDiscRecorder2 fornisce l'accesso all'oggetto registratore e alcune informazioni di base sul dispositivo, ad esempio ID fornitore, ID prodotto, revisione del prodotto e metodi per espellere il supporto e chiudere la barra.

Creare un writer di dati e scrivere l'immagine di masterizzazione

L'oggetto MsftDiscFormat2Data fornisce il metodo di scrittura, le proprietà relative alla funzione di scrittura e alle proprietà specifiche del supporto. L'interfaccia IDiscFormat2Data fornisce l'accesso all'oggetto MsftDiscFormat2Data .

Il registratore di dischi collega al writer di formato usando la proprietà IDiscFormat2Data::p ut_Recorder . Dopo che il registratore è associato al writer di formato, è possibile eseguire query relative alle proprietà specifiche del supporto e aggiornare le proprietà specifiche della scrittura prima di scrivere l'immagine del risultato sul disco usando il metodo IDiscFormat2Data::Write .

Altre interfacce di scrittura di formato fornite da IMAPI funzionano in modo analogo; le interfacce di scrittura di formato aggiuntive includono:

Nota

È possibile che una transizione dello stato di alimentazione venga eseguita durante un'operazione di burn (ad esempio la sospensione del log dell'utente o la sospensione del sistema) che comporta l'interruzione del processo di burn e la possibile perdita di dati. Per considerazioni sulla programmazione, vedere Prevenzione del logoff o sospensione durante un burn.

 

Esempio VBScript

Questo esempio di script illustra come usare gli oggetti IMAPI per masterizzare supporti ottici; in particolare, scrivere una directory in un disco vuoto. Il codice non contiene alcun controllo degli errori e presuppone quanto segue:

  • Un dispositivo disco compatibile è installato nel sistema.
  • Il dispositivo disco è la seconda unità del sistema.
  • Un disco compatibile viene inserito nel dispositivo disco.
  • Il disco è vuoto.
  • I file da scrivere sul disco si trovano in "g:\burndir".

Altre funzionalità, ad esempio il controllo degli errori, la compatibilità del dispositivo e dei supporti, la notifica degli eventi e il calcolo dello spazio disponibile sul disco possono essere aggiunti a questo 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

Uso di IMAPI

IDiscFormat2Data

IDiscFormat2Erase

IDiscFormat2RawCD

IDiscFormat2TrackAtOnce

IDiscMaster2

IDiscRecorder2

IFileSystemImage

IStream