'IMAPI'에 해당되는 글 1건

원본 http://www.zdnet.co.kr/builder/dev/etc/0,39031619,10066417,00.htm
 
 
나만의 CD 제작 프로그램 만들기
윈도우 XP IMAPI를 이용한 CD Burn 프로그래밍
현륜식 ( ZDNet Korea )   2004/02/11
 
윈도우 XP는 IMAPI를 이용해 단순히 끌어서 놓거나 보내기를 통해 CD-R이나 CD-RW로 CD를 구울 수 있습니다. 여기서는 윈도우 XP에 내장된 IMAPI를 이용해 윈도우 XP와 같은 CD Burn 프로그램을 구현해 보고 향후 IMAPI가 어떻게 변화해 갈 지 전망해 봅니다.
현 재 윈도우 XP는 컴퓨터를 사용하는데 필요한 기능을 모두 가지고 있습니다. 그 중에 가장 눈에 띄는 것이 새롭게 내장된 CD Burn 기능입니다. 이 기능은 MS의 요청에 따라 아답텍에서 만든 IMAPI(Image Mastering API)를 이용하는데, 이지CD 크리에이터의 다이렉트 CD와 같다고 생각하면 됩니다.

기존에 이지CD 크리에이터 사용자라면 혹시 엔진이 불안정하지 않을까 생각할 지도 모릅니다. 실제로 아답텍의 이지CD 크리에이터는 프로그램의 불안정으로 인한 잦은 패치로 사용자들의 불만을 샀기 때문입니다. 초기에 윈도우 XP에 내장된 IMAPI도 이지CD 크리에이터나 네로(Nero) Burn 등의 다른 프로그램과의 호환성 문제 및 CD 기록기기와의 문제가 있었지만 지금은 거의 다 해결된 상태이므로 걱정할 필요는 없습니다.

CD Burn 프로그램 설계·구현
CD에 파일을 저장하거나 복사할 때 운영체제는 사전에 하드 드라이브에 이미지를 마스터한 후 CD를 굽게 됩니다. 이때 사전 마스터링은 기록 과정상에 에러가 생기는 것을 방지하고 고속 기록시에 미디어가 필요 없이 렌더하는 것을 최소화합니다. IMAPI는 이 이미지를 마스터링(혹은 CD Burn)하는 API라는 뜻으로, 현재 줄리엣(Jolliet)과 ISO9660 형식의 데이터 디스크와 레드북 형식의 오디오 디스크를 지원하고 있습니다.

IMAPI와 COM 객체
IMAPI에는 네 개의 주요 COM 객체와 인터페이스가 있습니다.

① MSDiscMasterObj
② MSDiscRecorderObj
③ MSDiscStashObj
④ MSBurnEngineObj

MSDiscStashObj와 MSBurnEngineObj 객체는 IMAPI에 접근하는 내부 인터페이스로, IMAPI 아키텍처를 쉽게 이해할 수 있도록 간단히 언급만 되어 있습니다. MSDiscStashObj(IDiscStash 인터페이스를 통해)는 MSDiscMasterObj에 이용되는 Raw 파일(800MB까지 허용)로 구워질 오디오 이미지나 데이터 디스크라고 생각하면 됩니다. 이 Stash는 로우 레벨 엔진으로부터 굽기가 요청되면(IMSBurnEngine 인터페이스를 통해) MSBurnEngineObj로 건네집니다.

그 외 MSDiscMasterObj 객체는 다음 다이어그램처럼 세 개의 인터페이스를 제공합니다. 그 중 IDiscMaster 인터페이스는 IMAPI 열기와 지원 포맷 나열하기, 포맷 선택하기, 레코더 리스트 보이기, 레코더 선택하기, 굽기, IMAPI 닫기 등을 할 수 있습니다.

사용자 삽입 이미지
<그림 1> IMAPI v1 아키텍처

그리고 IJolietDiscMaster와 IRedbookDiscMaster 인터페이스는 각각 데이터와 오디오 디스크를 컨트롤하며 IDiscMaster 인터페이스를 통해 포맷을 선택한 후 사용할 수 있습니다. 또 MSDiscRecorderObj 객체는 IDiscRecorder 인터페이스를 통해 접근할 수 있습니다. IMAPI와 호환되는 모든 CD-R과 CD-RW 디바이스는 MSDiscRecorderObj 객체를 가지고 있으며, CD 굽기에 사용될 디바이스를 선택하기 위해 MSDiscRecorderObj 객체의 IDiscRecorder 인터페이스 포인터를 사용합니다. 이를 통해 굽는 속도와 다른 여러 변수들을 설정할 수 있습니다.

이 외에 CD를 굽기 위해 ICDBurn 인터페이스를 사용할 수 있는데 이는 윈도우 셸로, CD에 파일을 쓰기 한 하드웨어가 시스템에 있는지 알아보고 그 디바이스의 drive letter를 알아낼 수 있습니다. 또 staging 파일을 CD로 만들 수 있는데, 이 역시 IMAPI를 기반으로 만들어져 있습니다.

사용자 삽입 이미지
 
<그림 2> MSDiscMasterObj

 


Code Project - CD Burner : http://www.codeproject.com/win32/CD_Burner.asp
블로그 이미지

요다할아범

,