다음을 통해 공유


IMAPI와 상호 작용

다음 단계에서는 애플리케이션과 IMAPI 간의 일반적인 상호 작용에 대해 설명합니다.

  1. MSDiscMasterObj의 instance 만들고(CoCreateInstance 사용, 가져오기의 스마트 포인터 등) IDiscMaster 인터페이스를 요청합니다.
  2. IDiscMaster::Open을 호출하여 IMAPI에 대한 액세스 권한을 획득합니다. 이 호출이 성공하면 애플리케이션은 MSDiscMasterObj에서 구현된 모든 인터페이스 및 메서드에 대한 모든 액세스 권한을 갖습니다.
  3. EnumDiscMasterFormats를 사용하여 디스크 master 형식 열거자를 검색합니다. 디스크 master 개체가 지원하는 형식 집합을 열거한 다음 활성 형식을 선택합니다. 열거자에서 반환되는 형식은 IJolietDiscMasterIRedbookDiscMaster에 대한 인터페이스의 IID입니다.
  4. EnumDiscRecorders를 사용하여 디스크 레코더 열거자를 검색합니다. 지원되는 디스크 레코더 목록(활성 형식 관련)을 열거한 다음 활성 레코더를 선택합니다. IDiscRecorder 인터페이스는 물리적 디바이스를 나타냅니다.
  5. IDiscMaster::P rogressAdvise를 사용하여 진행률 콜백을 등록합니다.
  6. 선택한 형식의 인터페이스를 사용하여 콘텐츠를 빌드합니다. 콘텐츠는 증분 방식으로 빌드되므로 트랙 또는 폴더 콘텐츠를 디스크 조각에 하나씩 추가할 수 있습니다. 이 콘텐츠를 빌드하는 것을 이미지 스테이징이라고 합니다. 스테이징된 이미지의 콘텐츠를 증분 방식으로 삭제할 수 없지만(추가된 트랙을 제거할 수 없음) 스테이징이 다시 시작될 수 있도록 스테이징된 이미지의 내용을 지울 수 있습니다. IDiscMaster::ClearFormatContent를 사용하여 스테이징을 다시 시작합니다.

**오디오: **

  1. IRedbookDiscMaster::CreateAudioTrack을 사용하여 디스크에서 새 오디오 트랙이 시작되고 있음을 나타냅니다.
  2. IRedbookDiscMaster::AddAudioTrackBlocks를 사용하여 원시 오디오 데이터를 트랙에 추가합니다. 애플리케이션은 GetAvailableAudioTrackBlocks, GetTotalAudioBlocksGetUsedAudioBlocks를 사용하여 통계 정보를 검색할 수 있습니다.
  3. IRedbookDiscMaster::CloseAudioTrack을 사용하여 오디오 트랙을 닫습니다.
  4. 공간이 부족하거나 모든 오디오 트랙이 기록될 때까지 1-3단계를 반복합니다.

**데이터: **

  1. IJolietDiscMaster::AddData를 사용하여 폴더의 내용을 이미지에 추가합니다. 폴더 내의 항목은 이미지 파일의 루트에 배치됩니다. GetTotalDataBlocksGetUsedDataBlocks를 사용하여 통계 정보를 검색합니다.
  2. 공간이 부족하거나 모든 데이터가 추가될 때까지 위의 단계를 반복합니다.

**모든 디스크의 경우: **

  1. IDiscMaster::RecordDisc를 사용하여 디스크를 기록합니다.
  2. IDiscMaster::Close를 사용하여 IMAPI 세션을 닫습니다. 세션을 닫으면 디스크 숨김의 내용이 지워지게 됩니다.