Queimando uma imagem de disco

O domínio (gravação de um disco) usando IMAPI consiste nas seguintes etapas:

  1. Construa uma imagem do sistema de arquivos que contém os diretórios e os arquivos a serem gravados.
  2. Configure um gravador de disco para se comunicar com o dispositivo óptico.
  3. Crie um gravador de dados e queime a imagem em disco.

Para obter um exemplo que queima uma imagem de disco, consulte Exemplo de VBScript.

Construir uma imagem de gravação

Uma imagem de gravação é um fluxo de dados que está pronto para ser gravado em mídia óptica. A imagem de gravação para os formatos ISO9660, Joliet e UDF consiste em um sistema de arquivos de arquivos e diretórios individuais. O objeto CFileSystemImage é o objeto do sistema de arquivos que contém os arquivos e diretórios a serem colocados na mídia óptica. A interface IFileSystemImage fornece acesso ao objeto e às configurações do sistema de arquivos.

Depois de criar o objeto do sistema de arquivos, chame os métodos IFileSystemImage::CreateFileItem e IFileSystemImage::CreateDirectoryItem para criar os objetos de arquivo e diretório, respectivamente. Os objetos de arquivo e diretório podem ser usados para fornecer detalhes específicos sobre o arquivo e o diretório. Os métodos do manipulador de eventos disponíveis para IFileSystemImage podem identificar o arquivo atual que está sendo adicionado à imagem do sistema de arquivos, o número de setores já copiados e o número total de setores a serem copiados.

Opcionalmente, uma imagem de inicialização pode ser anexada ao sistema de arquivos usando a propriedade IFileSystemImage::p ut_BootImageOptions . Para obter um exemplo, consulte Adicionando uma imagem de inicialização.

Por fim, chame IFileSystemImage::CreateResultImage para criar um fluxo de dados e fornece acesso por meio de IFileSystemImageResult. O novo fluxo de dados pode então ser fornecido diretamente para o método IDiscFormat2Data::Write ou ser salvo em um arquivo para uso posterior.

Configurar um gravador de disco

O objeto MsftDiscMaster2 fornece uma enumeração dos dispositivos ópticos no sistema. A interface IDiscMaster2 fornece acesso à enumeração de dispositivo resultante. Percorra as enumerações para localizar um dispositivo de gravação apropriado. O objeto MsftDiscMaster2 também fornece notificações de eventos quando dispositivos ópticos são adicionados ou excluídos de um computador.

Depois de encontrar um gravador óptico e recuperar sua ID, crie um objeto MsftDiscRecorder2 e inicialize o gravador usando a ID do dispositivo. A interface IDiscRecorder2 fornece acesso ao objeto gravador, bem como algumas informações básicas do dispositivo, como ID do fornecedor, ID do produto, revisão do produto e métodos para ejetar a mídia e fechar a bandeja.

Criar um gravador de dados e gravar a imagem de gravação

O objeto MsftDiscFormat2Data fornece o método de gravação, as propriedades sobre a função de gravação e as propriedades específicas da mídia. A interface IDiscFormat2Data fornece acesso ao objeto MsftDiscFormat2Data .

O gravador de disco é vinculado ao gravador de formato usando a propriedade IDiscFormat2Data::p ut_Recorder . Depois que o gravador for associado ao gravador de formato, você poderá executar consultas sobre a mídia e atualizar propriedades específicas de gravação antes de gravar a imagem de resultado em disco usando o método IDiscFormat2Data::Write .

Outras interfaces de gravação de formato fornecidas pelo IMAPI funcionam da mesma forma; interfaces de gravação de formato adicionais incluem:

Observação

É possível que uma transição de estado de energia ocorra durante uma operação de gravação (ou seja, logoff do usuário ou suspensão do sistema), o que leva à interrupção do processo de gravação e à possível perda de dados. Para considerações sobre programação, consulte Impedindo logoff ou Suspender durante uma gravação.

 

Exemplo de VBScript

Este exemplo de script mostra como usar os objetos IMAPI para gravar mídia óptica; mais especificamente, escreva um diretório em um disco em branco. O código não contém nenhuma verificação de erro e pressupõe o seguinte:

  • Um dispositivo de disco compatível é instalado no sistema.
  • O dispositivo de disco é a segunda unidade no sistema.
  • Um disco compatível é inserido no dispositivo de disco.
  • O disco está em branco.
  • Os arquivos a serem gravados no disco estão localizados em "g:\burndir".

Funcionalidades adicionais, como verificação de erros, compatibilidade de dispositivo e mídia, notificação de eventos e cálculo de espaço livre no disco podem ser adicionadas a esse 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

Usando IMAPI

IDiscFormat2Data

IDiscFormat2Erase

IDiscFormat2RawCD

IDiscFormat2TrackAtOnce

IDiscMaster2

IDiscRecorder2

IFileSystemImage

Istream