Compartir a través de


Grabar una imagen de disco

La masterización (grabación de un disco) mediante IMAPI consta de los pasos siguientes:

  1. Construya una imagen del sistema de archivos que contenga los directorios y los archivos que se van a escribir en el disco.
  2. Configure una grabadora de disco para comunicarse con el dispositivo óptico.
  3. Cree un escritor de datos y grabe la imagen en el disco.

Para obtener un ejemplo que quema una imagen de disco, consulte el ejemplo de VBScript.

Construcción de una imagen de grabación

Una imagen de grabación es un flujo de datos que está listo para escribirse en medios ópticos. La imagen de grabación para formatos ISO9660, Joliet y UDF consta de un sistema de archivos de archivos individuales y directorios. El objeto CFileSystemImage es el objeto del sistema de archivos que contiene los archivos y directorios que se van a colocar en el medio óptico. La interfaz IFileSystemImage proporciona acceso al objeto y la configuración del sistema de archivos.

Después de crear el objeto de sistema de archivos, llame a los métodos IFileSystemImage::CreateFileItem e IFileSystemImage::CreateDirectoryItem para crear los objetos de archivo y directorio, respectivamente. Los objetos de archivo y directorio se pueden usar para proporcionar detalles específicos sobre el archivo y el directorio. Los métodos de controlador de eventos disponibles para IFileSystemImage pueden identificar el archivo actual que se va a agregar a la imagen del sistema de archivos, el número de sectores ya copiados y el número total de sectores que se van a copiar.

Opcionalmente, una imagen de arranque se puede adjuntar al sistema de archivos mediante la propiedad IFileSystemImage::p ut_BootImageOptions . Para obtener un ejemplo, vea Agregar una imagen de arranque.

Por último, llame a IFileSystemImage::CreateResultImage para crear un flujo de datos y proporcione acceso a través de IFileSystemImageResult. A continuación, el nuevo flujo de datos se puede proporcionar directamente al método IDiscFormat2Data::Write o guardarse en un archivo para su uso posterior.

Configurar una grabadora de disco

El objeto MsftDiscMaster2 proporciona una enumeración de los dispositivos ópticos en el sistema. La interfaz IDiscMaster2 proporciona acceso a la enumeración de dispositivos resultante. Recorra las enumeraciones para buscar un dispositivo de grabación adecuado. El objeto MsftDiscMaster2 también proporciona notificaciones de eventos cuando los dispositivos ópticos se agregan o eliminan de un equipo.

Después de encontrar una grabadora óptica y recuperar su identificador, cree un objeto MsftDiscRecorder2 e inicialice la grabadora con el identificador del dispositivo. La interfaz IDiscRecorder2 proporciona acceso al objeto de grabadora, así como información básica del dispositivo, como el identificador de proveedor, el identificador de producto, la revisión del producto y los métodos para expulsar el medio y cerrar la bandeja.

Creación de un escritor de datos y escritura de la imagen de grabación

El objeto MsftDiscFormat2Data proporciona el método de escritura, las propiedades sobre la función de escritura y las propiedades específicas de medios. La interfaz IDiscFormat2Data proporciona acceso al objeto MsftDiscFormat2Data .

La grabadora de discos se vincula al sistema de escritura de formato mediante la propiedad IDiscFormat2Data::p ut_Recorder . Una vez enlazada la grabadora al sistema de escritura de formato, puede realizar consultas relativas a los medios y actualizar propiedades específicas de escritura antes de escribir la imagen de resultado en el disco mediante el método IDiscFormat2Data::Write .

Otras interfaces de escritura de formato proporcionadas por IMAPI funcionan de forma similar; entre las interfaces de escritura de formato adicionales se incluyen:

Nota:

Es posible que se produzca una transición de estado de energía durante una operación de grabación (es decir, cierre de sesión del usuario o suspensión del sistema), lo que conduce a la interrupción del proceso de quema y la posible pérdida de datos. Para conocer las consideraciones de programación, vea Impedir inicio de sesión o suspender durante una grabación.

 

Ejemplo de VBScript

En este ejemplo de script se muestra cómo usar los objetos IMAPI para grabar medios ópticos; más concretamente, escriba un directorio en un disco en blanco. El código no contiene ninguna comprobación de errores y asume lo siguiente:

  • Se instala un dispositivo de disco compatible en el sistema.
  • El dispositivo de disco es la segunda unidad del sistema.
  • Se inserta un disco compatible en el dispositivo de disco.
  • El disco está en blanco.
  • Los archivos para escribir en el disco se encuentran en "g:\burndir".

Se puede agregar a este script funcionalidad adicional, como la comprobación de errores, la compatibilidad de dispositivos y medios, la notificación de eventos y el cálculo del espacio libre en el disco.

' 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 de IMAPI

IDiscFormat2Data

IDiscFormat2Erase

IDiscFormat2RawCD

IDiscFormat2TrackAtOnce

IDiscMaster2

IDiscRecorder2

IFileSystemImage

Istream