디스크 이미지 굽기

IMAPI를 사용하여 마스터링(디스크 굽기)은 다음 단계로 구성됩니다.

  1. 디스크를 쓸 디렉터리와 파일이 포함된 파일 시스템 이미지를 생성합니다.
  2. 광학 장치와 통신하도록 디스크 레코더를 설정합니다.
  3. 데이터 기록기를 만들고 이미지를 디스크에 구울 수 있습니다.

디스크 이미지를 태우는 예제는 VBScript 예제를 참조하세요.

굽기 이미지 생성

굽기 이미지는 광학 미디어에 쓸 준비가 된 데이터 스트림입니다. ISO9660, Joliet 및 UDF 형식에 대한 굽기 이미지는 개별 파일 및 디렉터리 파일 시스템으로 구성됩니다. CFileSystemImage 개체는 광학 미디어에 배치할 파일 및 디렉터리를 보유하는 파일 시스템 개체입니다. IFileSystemImage 인터페이스는 파일 시스템 개체 및 설정에 대한 액세스를 제공합니다.

파일 시스템 개체를 만든 후 IFileSystemImage::CreateFileItemIFileSystemImage::CreateDirectoryItem 메서드를 호출하여 각각 파일 및 디렉터리 개체를 만듭니다. 파일 및 디렉터리 개체를 사용하여 파일 및 디렉터리에 대한 특정 세부 정보를 제공할 수 있습니다. IFileSystemImage에 사용할 수 있는 이벤트 처리기 메서드는 파일 시스템 이미지에 추가되는 현재 파일, 이미 복사된 섹터 수 및 복사할 총 섹터 수를 식별할 수 있습니다.

필요에 따라 IFileSystemImage::p ut_BootImageOptions 속성을 사용하여 부팅 이미지를 파일 시스템에 연결할 수 있습니다. 예제는 부팅 이미지 추가를 참조하세요.

마지막으로 IFileSystemImage::CreateResultImage 를 호출하여 데이터 스트림을 만들고 IFileSystemImageResult를 통해 액세스를 제공합니다. 그런 다음 새 데이터 스트림을 IDiscFormat2Data::Write 메서드에 직접 제공하거나 나중에 사용할 수 있도록 파일에 저장할 수 있습니다.

디스크 레코더 설정

MsftDiscMaster2 개체는 시스템의 광학 디바이스 열거형을 제공합니다. IDiscMaster2 인터페이스는 결과 디바이스 열거형에 대한 액세스를 제공합니다. 열거형을 트래버스하여 적절한 기록 디바이스를 찾습니다. 또한 MsftDiscMaster2 개체는 컴퓨터에서 광학 디바이스를 추가하거나 삭제할 때 이벤트 알림을 제공합니다.

광학 레코더를 찾아 ID를 검색한 후 MsftDiscRecorder2 개체를 만들고 디바이스 ID를 사용하여 레코더를 초기화합니다. IDiscRecorder2 인터페이스는 레코더 개체뿐만 아니라 공급업체 ID, 제품 ID, 제품 수정 버전 및 미디어를 꺼내 트레이를 닫는 메서드와 같은 몇 가지 기본 디바이스 정보에 대한 액세스를 제공합니다.

데이터 기록기 만들기 및 굽기 이미지 작성

MsftDiscFormat2Data 개체는 쓰기 메서드, 쓰기 함수에 대한 속성 및 미디어별 속성을 제공합니다. IDiscFormat2Data 인터페이스는 MsftDiscFormat2Data 개체에 대한 액세스를 제공합니다.

디스크 레코더는 IDiscFormat2Data::p ut_Recorder 속성을 사용하여 형식 작성기에 연결됩니다. 레코더가 형식 작성기에 바인딩된 후에는 IDiscFormat2Data::Write 메서드를 사용하여 결과 이미지를 디스크에 쓰기 전에 미디어에 대한 쿼리를 수행하고 쓰기 관련 속성을 업데이트할 수 있습니다.

IMAPI에서 제공하는 다른 형식 쓰기 인터페이스도 비슷하게 작동합니다. 추가 형식 쓰기 인터페이스는 다음과 같습니다.

참고

굽기 작업(예: 사용자 로그오프 또는 시스템 일시 중단) 중에 전원 상태 전환이 수행되어 굽기 프로세스가 중단되고 데이터 손실이 발생할 수 있습니다. 프로그래밍 고려 사항은 굽기 중에 로그오프 또는 일시 중단 방지를 참조하세요.

 

VBScript 예제

이 스크립트 예제에서는 IMAPI 개체를 사용하여 광학 미디어를 굽는 방법을 보여 봅니다. 더 구체적으로는 빈 디스크에 디렉터리를 씁니다. 코드는 오류 검사를 포함하지 않으며 다음을 가정합니다.

  • 호환되는 디스크 디바이스가 시스템에 설치됩니다.
  • 디스크 디바이스는 시스템의 두 번째 드라이브입니다.
  • 호환되는 디스크가 디스크 디바이스에 삽입됩니다.
  • 디스크가 비어 있습니다.
  • 디스크에 쓸 파일은 "g:\burndir"에 있습니다.

오류 검사, 디바이스 및 미디어 호환성, 이벤트 알림 및 디스크의 여유 공간 계산과 같은 추가 기능을 이 스크립트에 추가할 수 있습니다.

' 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

IMAPI 사용

IDiscFormat2Data

IDiscFormat2Erase

IDiscFormat2RawCD

IDiscFormat2TrackAtOnce

IDiscMaster2

IDiscRecorder2

IFileSystemImage

IStream