IMAPI와 상호 작용
다음 단계에서는 애플리케이션과 IMAPI 간의 일반적인 상호 작용에 대해 설명합니다.
- MSDiscMasterObj의 instance 만들고(CoCreateInstance 사용, 가져오기의 스마트 포인터 등) IDiscMaster 인터페이스를 요청합니다.
- IDiscMaster::Open을 호출하여 IMAPI에 대한 액세스 권한을 획득합니다. 이 호출이 성공하면 애플리케이션은 MSDiscMasterObj에서 구현된 모든 인터페이스 및 메서드에 대한 모든 액세스 권한을 갖습니다.
- EnumDiscMasterFormats를 사용하여 디스크 master 형식 열거자를 검색합니다. 디스크 master 개체가 지원하는 형식 집합을 열거한 다음 활성 형식을 선택합니다. 열거자에서 반환되는 형식은 IJolietDiscMaster 및 IRedbookDiscMaster에 대한 인터페이스의 IID입니다.
- EnumDiscRecorders를 사용하여 디스크 레코더 열거자를 검색합니다. 지원되는 디스크 레코더 목록(활성 형식 관련)을 열거한 다음 활성 레코더를 선택합니다. IDiscRecorder 인터페이스는 물리적 디바이스를 나타냅니다.
- IDiscMaster::P rogressAdvise를 사용하여 진행률 콜백을 등록합니다.
- 선택한 형식의 인터페이스를 사용하여 콘텐츠를 빌드합니다. 콘텐츠는 증분 방식으로 빌드되므로 트랙 또는 폴더 콘텐츠를 디스크 조각에 하나씩 추가할 수 있습니다. 이 콘텐츠를 빌드하는 것을 이미지 스테이징이라고 합니다. 스테이징된 이미지의 콘텐츠를 증분 방식으로 삭제할 수 없지만(추가된 트랙을 제거할 수 없음) 스테이징이 다시 시작될 수 있도록 스테이징된 이미지의 내용을 지울 수 있습니다. IDiscMaster::ClearFormatContent를 사용하여 스테이징을 다시 시작합니다.
**오디오: **
- IRedbookDiscMaster::CreateAudioTrack을 사용하여 디스크에서 새 오디오 트랙이 시작되고 있음을 나타냅니다.
- IRedbookDiscMaster::AddAudioTrackBlocks를 사용하여 원시 오디오 데이터를 트랙에 추가합니다. 애플리케이션은 GetAvailableAudioTrackBlocks, GetTotalAudioBlocks 및 GetUsedAudioBlocks를 사용하여 통계 정보를 검색할 수 있습니다.
- IRedbookDiscMaster::CloseAudioTrack을 사용하여 오디오 트랙을 닫습니다.
- 공간이 부족하거나 모든 오디오 트랙이 기록될 때까지 1-3단계를 반복합니다.
**데이터: **
- IJolietDiscMaster::AddData를 사용하여 폴더의 내용을 이미지에 추가합니다. 폴더 내의 항목은 이미지 파일의 루트에 배치됩니다. GetTotalDataBlocks 및 GetUsedDataBlocks를 사용하여 통계 정보를 검색합니다.
- 공간이 부족하거나 모든 데이터가 추가될 때까지 위의 단계를 반복합니다.
**모든 디스크의 경우: **
- IDiscMaster::RecordDisc를 사용하여 디스크를 기록합니다.
- IDiscMaster::Close를 사용하여 IMAPI 세션을 닫습니다. 세션을 닫으면 디스크 숨김의 내용이 지워지게 됩니다.