首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> 關於VC++

IMAPI 完整攻略:從偵測燒錄裝置到資料/音樂 CD 燒錄實作

     編輯:關於VC++

Windows XP 內建 CD 燒錄支援,免購 Nero/Roxio 即可從自有程式實現燒錄。本文詳細解析兩條路徑:簡易 ICDBurn 介面(僅複製檔案/目錄)與 功能完整的 IMAPI (Image Mastering API)(音樂 CD、多裝置枚舉、詳細裝置屬性、模擬燒錄)。附贈封裝類別 CCDBurn、IMAPITools 庫與測試程式 CDINFO。

路徑一:ICDBurn —— 三行代碼燒錄資料

CCDBurn burner;
if (!burner.HasRecordableDrive()) return;          // 1. 偵測可寫裝置
CString drive = burner.GetRecorderDriveLetter();   // 2. 取得燒錄器盤符
CString staging = burner.GetBurnFolderPath();      // 3. 取得「預備區」路徑
  • 預備區:預設 %userprofile%\Local Settings\Application Data\Microsoft\CD Burning,務必用 SHGetFolderPath(CSIDL_CDBURN_AREA) 取得真實路徑(用戶可透過 TweakUI 修改)。
  • 燒錄流程:將檔案/目錄複製到預備區 → burner.Burn() 通知 Shell 開始燒錄。

光碟機錄製屬性頁

路徑二:IMAPI —— 專業級控制

IMAPI 介面繁複(見圖 2),本文提供 IMAPITools 封裝庫隱藏 COM 細節:

核心類別

類別封裝介面主要功能
CDiscMasterIDiscMaster開啟 Session、枚舉支援格式、選擇作用中燒錄器
CDiscRecorderIDiscRecorder代表單一燒錄裝置,查詢型號/類型/路徑、彈出光碟
CJolietDiscMasterIJolietDiscMaster資料 CD (Joliet/ISO-9660) 添加檔案/目錄
CRedbookDiscMasterIRedbookDiscMaster音樂 CD (Redbook) 添加音軌、原始 PCM 數據寫入

關鍵流程

CDiscMaster dm; dm.Open();                    // 開啟 IMAPI Session
CDiscRecorder dr;
CDiscRecorderIterator itr(dm);
while (itr.Next(dr)) { /* 列舉所有燒錄器 */ }

dm.SetActiveDiscRecorder(dr);                 // 選擇目標燒錄器
CJolietDiscMaster jdm(dm);                    // 取得資料燒錄介面
jdm.AddData(storagePtr);                      // 添加 IStorage 資料流
// 或
CRedbookDiscMaster rdm(dm);
rdm.AddAudioTrackBlocks(pcmData);             // 添加 44.1kHz/16bit 原始音訊

dm.RecordDisc(FALSE, TRUE);                   // 正式燒錄(bSimulate=FALSE, bEject=TRUE)
dm.Close();

進階特性

  • 模擬燒錄:RecordDisc(TRUE, ...) 只檢查流程不寫入,適合開發測試。
  • 多格式支援:GetSupportedFormats 回傳 IID_IRedbookDiscMaster / IID_IJolietDiscMaster,無需複雜 Enum 介面。
  • 裝置屬性:CDiscRecorder 可查詢 CD-R/CD-RW、製造商、型號、韌體版本等。

CDINFO 測試程式展示

CDINFO 主控台輸出

輸出範例:

Recorder: PHILIPS CDRW4800
Type: CD-RW
Path: D:\
Supported Formats: Redbook, Joliet

選型建議

  • 僅需「複製檔案到 CD」→ ICDBurn 最簡潔。
  • 需音樂燒錄、多裝置選擇、進度控制、模擬測試 → IMAPI + IMAPITools。

附件含 CCDBurn、IMAPITools 完整原始碼與 CDINFO 專案,VC++ 6.0/XP 編譯通過。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved