windows燒錄程式設計

2021-07-15 09:25:14 字數 3428 閱讀 7827

一,使用 windows xp 內建的燒錄功能參考

1,簡單檔案燒錄

使用 shell 的 icdburn 介面,其中方法:

hasrecordabledrive 掃瞄系統,如果發現可寫的cd驅動器則返回true。

getrecorderdriveletter 返回可寫驅動器。

burn 執行燒錄動作,從集結區(staging area)寫入 cd-r。

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/*** burner (c/c++ library)

mcdb 是 binary magic 開發的商用 cd/*** 燒錄元件,易用性比較好,有 vcl 和 activex 兩大類別,audio/cd/***/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  裝入和彈出光碟

三,hpcde

hpcde 是 primo software 開發的一款高效能cd/***燒錄元件,目前版本1.78,從特性列表中可以看到它對硬體的支援非常多,在寫入中支援 *** 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              彈出碟片

參考四,cdrdao, cdrtools

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

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

cdrtools 也是開源的,不過它是全功能的,包括ide/atapi/scsi, 音訊/資料/混合cd,多段燒錄,cd-rw,tao/dao/raw 等等,同時支援很多作業系統。

光碟燒錄程式設計 收藏

光碟燒錄程式設計 收藏 光碟燒錄程式設計 應朋友求助,給應用軟體加入光碟防拷貝支援,本來想照搬早期的磁碟穿孔技術,不過光碟和軟盤有較大區別,操作起來比較複雜,而且可靠性較差。一開始想,cd r 空盤應該有物理序列號可以使用,後來發現不存在這樣的序列號。即使有,虛擬光碟機軟體一樣可以冒充這樣的序列號,...

Lattice的JTAG程式設計燒錄

jtag joint test action group 聯合測試行動組 是一種國際標準測試協議 ieee1149.1相容 主要功能兩種 一是用於測試晶元,二是用於debug,對各類晶元以及外圍裝置進行除錯。此處介紹debug功能。jtag的基本原理是在器件內部定義乙個tap test access...

燒錄必讀 燒錄盤片全面

一些朋友在購買時只看盤面是否漂亮 是否便宜,其實不同碟片的質量差異還是很大的。的燒錄盤燒錄品質好 儲存時間長,而且不容易燒錄失敗,而質量差的燒錄盤則容易刻廢,儲存時間也不長。下面我們就來一起看看如何選購cd r rw r rw光碟。cd r rw篇 1 了解cd r rw光碟 cd r就是一次燒錄 ...