windows燒錄編程

來源:互聯網
上載者:User
 

一,使用 Windows XP 內建的燒錄功能

參考
    http://msdn.microsoft.com/msdnmag/issues/04/04/CQA/

1,簡單檔案燒錄

    使用 Shell 的 ICDBurn 介面,其中方法:
        HasRecordableDrive 掃描系統,如果發現可寫的CD磁碟機則返回TRUE。
        GetRecorderDriveLetter 返回可寫磁碟機。
        Burn 執行燒錄動作,從集結區(staging area)寫入 CD-R。

    其中,在執行燒錄之前必須先把要燒錄的檔案複製到集結區,集結區是一個臨時目錄,位於使用者目錄 "%USERPROFILE%\Local Settings\Application Data\Microsoft\CD Burning" ,也可以通過下面的Shell API擷取:
    SHGetFolderPath(CSIDL_CDBURN_AREA)

    注意這裡的方法只能用於單個燒錄光碟機,如果你有多個燒錄光碟機就不行了。

 

2,音樂CD、CD-RW 等更複雜的燒錄

    這裡使用的是 IMAPI (映像控制 Image Mastering API),也是 Windows XP 以上版本支援。IMAPI 可用於查詢燒錄機、寫入資料以及一些叫不出名字的先進功能。
    建立 MSDiscMasterObj 對象,該對象有如下介面:
        -o IDiscMaster
        -o IRedbookDiscMaster
        -o IJolietDiscMaster
    稍為解釋一下:CD 一般分為兩種:音頻CD和資料CD,前者遵循紅皮書規範,後者則為ISO-9660規範 (也有其它一些資料規範,Joliet是ISO-9660的擴充。)

    首先獲得 IDiscMaster 介面,調用 EnumDiscMasterFormats 列舉磁碟機支援的媒體格式 (Redbook, Joliet等),根據格式擷取 IRedbookDiscMaster 等對應介面。如果要求更高可以調用 Get/SetActiveDiscMasterFormat 以動態更新。

    然後調用 EnumDiscRecorders 列出所有燒錄裝置,對應 IDiscRecorder 介面,該介面提供諸如裝置路徑、屬性、彈出、擦除 CD-RW 等功能,但不包括寫入資料。

    具體的寫入資料根據不同格式而不同,對於資料CD,即Joliet 格式,首先調用 AddData(IStorage*) 方法加入檔案、目錄等,而對於音頻CD,即紅皮書格式則首先調用 AddAudioTrackBlocks 加入音軌。這些方法都是將資料拷貝到集結區,而不是立即寫入。
    當資料都準備好了,最後調用 IDiscMaster 的 RecordDisc 方法就可以了。這個方法有一個 bSimulate 的參數用於“類比寫入”,不過你可能永遠不會去用它。

    關於 IMAPI 就介紹到這,它雖然比較簡單,不過靠著 Windows XP 這棵大樹,對於VB程式員也差不多足夠了。

二,MCDB - Magic CD/DVD Burner (C/C++ Library)

MCDB 是 Binary Magic 開發的商用 CD/DVD 燒錄組件,易用性比較好,有 VCL 和 ActiveX 兩大類別,Audio/CD/DVD/VCD 等不同媒介的幾個版本,可用於 Delphi, C++ Builder, C#, VB.net, VB, C++ 等開發語言。MCDB支援UDF介面,Unicode字元集,以及多種燒錄機介面,可非常容易的製作MPEG VCD、可啟動光碟片等,其核心使用ASPI介面(進階SCSI編程介面,也可用於訪問IDE介面)。

編寫 MCDB 應用程式非常簡單,基本類似於 IMAPI。
首先建立 MCDBurner 對象,屬性 DeviceCount 和 DeviceName[] 查得燒錄機列表。
通過調用 InsertFile/InsertDir 將如要寫入的檔案和目錄,然後執行寫入,有幾種不同的寫入方法:
    BuildISOImage(filename)  寫入ISO映像檔案
    BurnISO(isofile)  將 ISO映像檔案寫入光碟片
    Prepare/Burn  直接寫入光碟片 (也就是著名的 on-the-fly 寫盤技術)
其它常用的方法有:
    EraseDisc  擦除 CD-RW 碟片
    DiscIs  判斷媒體類型
    MaxWriteSpeed/WriteSpeed  寫入速度
    LoadMedium/EjectMedium  裝入和彈出光碟片

MCDB 的 120M 試用版可在 www.binarymagics.com 上下載,零售價為200-400美元不等,同時有源碼出售,價格2000美元左右。

三,hpCDE

hpCDE 是 Primo Software 開發的一款高效能CD/DVD燒錄組件,目前版本1.78,從特性列表中可以看到它對硬體的支援非常多,在寫入中支援 DVD DAO/Incremental、TAO, SAO, DAO, RAW, CD-PLUS 等多種模式,支援 UDF和HFS檔案系統,可用於燒錄供Mac OS使用的光碟片,以及支援飛盤保護如JustLink, SafeBurn, SmartBurn等進階特性。

相較於前面兩個,hpCDE明顯複雜,沒辦法~ 強大的東西總是複雜的。

先從CD複製開始,工廠類 hpCDE 提供了其它類的構建方法,大致過程如下:

    初始化:
    hpCDE::CreateEngine     獲得引擎對象
    IEngine::Initialize     初始化引擎,其中win 95/98必須使用ASPI,而NT則不用。
    IEngine::GetDevices     獲得磁碟機列表
        - IDeviceCollection::GetItem    枚舉磁碟機
        - IDevice::GetWritePossible     判斷是否可寫,並忽略不可寫裝置
        - IDevice::GetDriveLetter       查詢盤符
        - IDevice::GetDescription       查詢卷標
        - IDevice::GetMediaFreeSpace    判斷是否碟片是否可用
        - IDevice::GetMediaIsBlank      判斷是否為空白盤
        - IDevice::GetMaxWriteSpeed     最高寫入速度
        - IDevice::GetReWritePossible   燒錄機是否支援擦除
        - IDevice::GetMediaIsReWritable 碟片是否可擦除

如果希望CD複製並行進行,因此需要建立兩個線程分別用於讀取/寫入,hpCDE 支援多執行緒模式。hpCDE 支援SAO/TAO/DAO,這裡CD複製使用的是 DAO。對於多段寫入,每個段對應於一個ISession,一個Session可以包含多個Track。
   
    寫入過程:
    IDevice::SetCurrentSpeeds   設定寫入速度
    IDevice::Eject              彈出碟片
   
   
參考
http://www.hpcde.com/documentation/index.html

四,cdrdao, cdrtools

參考:
    http://cdrdao.sourceforge.net/
    http://freshmeat.net/projects/cdrecord/
    http://linuxcommand.org/man_pages/cdrecord1.html

cdrdao 是一款開源 DAO 模式燒錄軟體,有 linux 和 windows 兩個版本。

cdrdao 僅支援一種模式 DAO 即一次完成寫盤,這種模式可以實現一些 pre-gaps 的有趣特性,對於光碟片防拷貝,則可以實現 ECC 檢查的技巧。因為是專門為 DAO 設計,不是專業人士恐怕無法閱讀其原始碼。

cdrtools 也是開源的,不過它是全功能的,包括IDE/ATAPI/SCSI, 音頻/資料/混合CD,多段燒錄,CD-RW,TAO/DAO/RAW 等等,同時支援很多作業系統。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.