Aracılığıyla paylaş


Çok Oturumlu Disk Oluşturma

Image Mastering API'si (IMAPI), aşağıdaki çoklu disk türlerine veya bu diskten dosyaların eklenmesini ve kaldırılmasını destekler:

  • CD-R/CD-RW
  • Single-Layer DVD+R/DVD-R
  • DVD+R İkili Katman
  • BD-R
  • DVD-RW/DVD+RW (Yalnızca Windows 7)
  • DVD-RAM (Yalnızca Windows 7)
  • BD-RE (Yalnızca Windows 7)

IMAPI kullanılarak çoklu disk oluşturma işlemi aşağıdaki adımlardan oluşur. Bu belgelenen adımların her biri, son bölümde sağlanan tam Visual Basic betik örneğinin ilgili bölümünü içerir.

Disk Kaydedicisi'ni başlatma

Cihaz başlatmadan önce, MsftDiscMaster2 nesnesi sistemdeki optik cihazların bir numaralandırmasını sağlar. IDiscMaster2 arabirimi, uygun kayıt cihazının konumunu kolaylaştırmak için bu cihaz numaralandırmasına erişim sağlar. MsftDiscMaster2 nesnesi, optik cihazlar bir makineye eklendiğinde veya makineden kaldırıldığında olay bildirimleri de sağlar.

Optik kaydediciyi bulup kendisine atanan kimliği aldıktan sonra, MsftDiscMaster2 nesnesini yeni bir oluşturun ve kaydediciyi belirli cihaz kimliğini kullanarak başlatın.

IDiscRecorder2 arabirimi, satıcı kimliği, ürün kimliği, ürün düzeltmesi gibi temel cihaz bilgilerine ve medyayı çıkarma veya tepsiyi kapatma yöntemlerine erişim sağlar.

Not

Aşağıdaki örnekte bildirilen ek sabitler ve boyutlar, daha sonra bu belgenin son bölümünde bulunan örnek betiğin tamamında kullanılır. Bu öğeler, disk kaydedicisi başlatma işlemi için gerekli değildir.

 

' *** 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 add
    Dim Stream               ' Data stream for burning device
    
    Index = 0                ' First drive on the system
    Path = "G:\BurnDir"      ' Files to add to the disc

    ' Create a DiscMaster2 object to connect to optical drives.
    Dim DiscMaster
    Set DiscMaster = WScript.CreateObject("IMAPI2.MsftDiscMaster2")

    ' Create a DiscRecorder2 object for the specified burning device.
    Dim UniqueId
    set Recorder = WScript.CreateObject("IMAPI2.MsftDiscRecorder2")
    UniqueId = DiscMaster.Item(Index)
    Recorder.InitializeDiscRecorder(UniqueId)

Veri Yazıcı Oluşturma

MsftDiscFormat2Data nesnesi yazma yöntemini, özelliklerini ve medyaya özgü özellikleri sağlar. IDiscFormat2Data arabirimi bu nesneye erişim sağlar.

Disk kaydedicisi, IDiscFormat2Data::put_Recorder özelliğini kullanarak biçim yazıcısına bağlanır. Kaydedici biçim yazıcısına bağlandıktan sonra, IDiscFormat2Data::Write yöntemini kullanarak sonuç görüntüsünü diske yazmadan önce medya ve yazmaya özgü özellik sorguları gerçekleştirilebilir.

Not

Aşağıdaki örnek kodda belirtilen istemci adı dizesi, belirli bir uygulamaya uygun şekilde ayarlanmalıdır.

 

    ' Create a DiscFormat2Data object and set the recorder
    Dim DataWriter
    Set DataWriter = CreateObject ("IMAPI2.MsftDiscFormat2Data")
    DataWriter.Recorder = Recorder
    DataWriter.ClientName = "IMAPIv2 TEST"

Dosya Sistemi Nesnesi Oluşturma

Yeni bir oturumu kaydetmek için önce bu oturum için bir kayıt görüntüsü oluşturulmalıdır. ISO9660, Joliet ve UDF biçimleri için yazma görüntüsü, tek tek dosya ve dizinlerden oluşan dosya sistemlerinden oluşur. MsftFileSystemImage nesnesi, optik medyaya yerleştirilecek dosyaları ve dizinleri içeren dosya sistemi nesnesidir. IFileSystemImage arabirimi, dosya sistemi nesnesine ve ayarlarına erişim sağlar.

    ' Create a new file system image object
    Dim FSI
    Set FSI = CreateObject("IMAPI2FS.MsftFileSystemImage")

Dosya Sistemini İçeri Aktarma

Devam etmeden önce IDiscFormat2::get_MediaHeuristicallyBlank özelliğini denetleyerek diskin boş olmadığından emin olun.

MsftFileSystemImage nesnesini oluşturduktan sonra, IFileSystemImage::put_MultisessionInterfaces özelliği, IFileSystemImage::ImportFileSystem veya IFileSystemImage::ImportSpecificFileSystem yöntemine yapılan çağrıdan önce başlatılmalıdır. Bu yöntemler, MsftFileSystemImage nesnesini önceden kaydedilmiş dosyaları ve dizinleri açıklayan bilgilerle otomatik olarak doldurur.

Not

IFileSystemImage::put_MultisessionInterfaces özelliği, veri yazıcı tarafından sağlanan çoklu oturum arabirimleriyle genellikle IDiscFormat2Data::get_MultisessionInterfaces özelliği aracılığıyla başlatılır.

 

IMAPI takılan medya için çoklu oturumu desteklemiyorsa veya medya başka bir nedenle eklenemiyorsa (ör. kapalı olduğundan dolayı), IFileSystemImage::put_MultisessionInterfaces özelliğini ayarlama girişimleri başarısız olur.

Önceki yazma oturumu birden fazla dosya sistemi türü içeriyorsa, IFileSystemImage::ImportFileSystem yöntemi, mevcut en gelişmiş dosya sistemi türünden bilgileri içeri aktarır. Örneğin, bu konuda sağlanan örnekte, UDF içeri aktarılan dosya sistemidir. Ancak, IFileSystemImage::ImportSpecificFileSystem yönteminin kullanılması, içeri aktaracak dosya sisteminin belirli bir seçimini sağlar.

Not

IFileSystemImage::IdentifyFileSystemsOnDisc yöntemi, diskte hangi dosya sistemlerinin kullanılabilir olduğunu belirlemek için kullanılabilir.

 

    ' Import the last session, if the disc is not empty, or initialize
    ' the file system, if the disc is empty
    If Not DataWriter.MediaHeuristicallyBlank _
    Then
        On Error Resume Next
        FSI.MultisessionInterfaces = DataWriter.MultisessionInterfaces
        If Err.Number <> 0 _
        Then
            WScript.Echo "Multisession is not supported for this disc"
            Main = 1
            Exit Function
        End If
        On Error Goto 0

        WScript.Echo "Importing data from the previous session..."
        FSI.ImportFileSystem()
    Else 
        FSI.ChooseImageDefaults(Recorder)
    End If

Dosya Sistemine Dosya Ekleme veya Kaldırma

Dosya sistemi nesnesini oluşturduktan ve önceki oturumdan dosya sistemini içeri aktardıktan sonra, sırasıyla yeni dosya ve dizin nesneleri oluşturmak için IFileSystemImage::CreateFileItem ve IFileSystemImage::CreateDirectoryItem yöntemlerini çağırın. Dosya ve dizin nesneleri, dosyalar ve dizinler hakkında belirli ayrıntılar sağlar. Alternatif olarak, IFsiDirectoryItem arabirimi aracılığıyla temsil edilen bir dizin nesnesinin IFsiDirectoryItem::AddTreeyöntemi, başka bir depolama cihazından (sabit sürücü) var olan dosyaları ve dizinleri eklemek için kullanılabilir.

IFileSystemImage için kullanılabilen olay işleyicisi güncelleştirme yöntemi, dosya sistemi görüntüsüne eklenen geçerli dosyayı, zaten kopyalanan kesim sayısını ve kopyalanacak toplam kesim sayısını tanımlar.

Mevcut dosyaları ve dizinleri dosya sisteminden kaldırmak için IFsiDirectoryItem::Remove ve IFsiDirectoryItem::RemoveTreeIFsiDirectoryItem arabirimi aracılığıyla temsil edilen dizin nesnelerinin yöntemlerini kullanın. IFileSystemImage::get_Root özelliği, dosya sisteminin kök dizinine bir işaretçi almak ve dizin ağacında gezinmek için IFsiDirectoryItem arabirimini kullanmak amacıyla kullanılır.

Not

IFsiDirectoryItem::Remove ve IFsiDirectoryItem::RemoveTree yöntemleri ile kaldırılan dosyalar ve dizinler diskten fiziksel olarak silinmez, bu nedenle gelişmiş yazılımlar silinen bilgileri kolayca kurtarabilir.

 

    ' Add the directory and its contents to the file system 
    WScript.Echo "Adding " & Path & " directory to the disc..."
    FSI.Root.AddTree Path, false

Dosya Sistemi Görüntüsü Oluşturma

Son adım IFileSystemImage::CreateResultImage çağırarak yazma görüntüsü için bir veri akışı oluşturmak ve IFileSystemImageResult arabirimi aracılığıyla erişim sağlamaktır. Bu veri akışı doğrudan IDiscFormat2Data::Write yöntemine sağlanabilir veya daha sonra kullanmak üzere bir dosyaya kaydedilebilir.

    ' Create an image from the file system image object
    Dim Result
    Set Result = FSI.CreateResultImage()
    Stream = Result.ImageStream

Örnek Özet

Aşağıdaki Visual Basic betik örneği, IMAPI nesnelerini kullanarak çoklu oturum diskleri oluşturmayı gösterir. Örnek yeni bir oturum oluşturur ve diske bir dizin ekler. Basitlik açısından kod kapsamlı hata denetimi gerçekleştirmez ve aşağıdakileri varsayar:

  • Uyumlu bir disk cihazı sisteme yüklenir.
  • Disk cihazı, sistemdeki ilk sürücüdür.
  • Disk cihazına uyumlu bir disk eklenir.
  • Diske eklenecek dosyalar "g:\burndir" içinde bulunur.

Betikte kapsamlı hata denetimi, cihaz ve medya uyumluluğu, olay bildirimi ve diskte boş alan hesaplaması gibi ek işlevler eklenebilir.

' This script adds data files from a single directory tree to a
' disc (a new session is added, if the disc already contains data)

' Copyright (C) Microsoft. All rights reserved.

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 add
    Dim Stream               ' Data stream for burning device
    
    Index = 0                ' First drive on the system
    Path = "G:\BurnDir"      ' Files to add to the disc

    ' Create a DiscMaster2 object to connect to optical drives.
    Dim DiscMaster
    Set DiscMaster = WScript.CreateObject("IMAPI2.MsftDiscMaster2")

    ' Create a DiscRecorder2 object for the specified burning device.
    Dim UniqueId
    set Recorder = WScript.CreateObject("IMAPI2.MsftDiscRecorder2")
    UniqueId = DiscMaster.Item(Index)
    Recorder.InitializeDiscRecorder(UniqueId)

    ' Create a DiscFormat2Data object and set the recorder
    Dim DataWriter
    Set DataWriter = CreateObject ("IMAPI2.MsftDiscFormat2Data")
    DataWriter.Recorder = Recorder
    DataWriter.ClientName = "IMAPIv2 TEST"

    ' Create a new file system image object
    Dim FSI
    Set FSI = CreateObject("IMAPI2FS.MsftFileSystemImage")

    ' Import the last session, if the disc is not empty, or initialize
    ' the file system, if the disc is empty
    If Not DataWriter.MediaHeuristicallyBlank _
    Then
        On Error Resume Next
        FSI.MultisessionInterfaces = DataWriter.MultisessionInterfaces
        If Err.Number <> 0 _
        Then
            WScript.Echo "Multisession is not supported for this disc"
            Main = 1
            Exit Function
        End If
        On Error Goto 0

        WScript.Echo "Importing data from the previous session..."
        FSI.ImportFileSystem()
    Else 
        FSI.ChooseImageDefaults(Recorder)
    End If

    ' Add the directory and its contents to the file system 
    WScript.Echo "Adding " & Path & " directory to the disc..."
    FSI.Root.AddTree Path, false

    ' Create an image from the file system image object
    Dim Result
    Set Result = FSI.CreateResultImage()
    Stream = Result.ImageStream
    
    ' Write stream to disc using the specified recorder
    WScript.Echo "Writing content to the disc..."
    DataWriter.Write(Stream)

    WScript.Echo "Finished writing content."
    Main = 0
End Function

IMAPI'yi Kullanma

IStream

IDiscMaster2

IDiscFormat2Data

IFileSystemImage