2009-11-07 89 views
1

我正試圖用C++編寫一個能夠在音軌之間無間隙地刻錄音頻CD的程序。如何實例化MsftRawCDImageCreator?

從我發現的情況來看,這只是最近纔有可能使用IMAPI,但應該可以從Windows XP SP2和Vista SP1開始。

問題是我找不到任何示例代碼如何執行此操作。

我確實發現是,我需要使用IRawCDImageCreator,可與IDiscFormat2RawCD被燒燬,但暴露出的功能AddTrack。

首先我使用下面的代碼,它成功創建了MsftDiscFormat2RawCD對象。

IDiscFormat2RawCD *rawCD; 
if (!SUCCEEDED(CoCreateInstance(__uuidof(MsftDiscFormat2RawCD), NULL, CLSCTX_INPROC_SERVER, __uuidof(IDiscFormat2RawCD), (LPVOID*)&rawCD))) 
    return -1; 

接下來,我嘗試創建IRawCDImageCreator:

IRawCDImageCreator *imageCreator; 
HRESULT res = CoCreateInstance(__uuidof(MsftRawCDImageCreator), NULL, CLSCTX_INPROC_SERVER, __uuidof(IRawCDImageCreator), (LPVOID*)&imageCreator); 
if (!SUCCEEDED(res)) 
    return -2; 

然而這失敗,錯誤代碼E_NOINTERFACE

The IMAPI Interfaces頁面似乎表明我正在使用正確的對象。

關於E_NOINTERFACE我確實發現了this blog post,它說了關於公寓線程的一些事情,但我不確定我怎麼能改變這一點,以及爲什麼創建第一個對象沒有問題。

回答

0

This page說你需要安裝Windows Feature Pack for Storage才能使用IRawCDImageCreator接口。

+0

謝謝,我想我讀了別的地方不同的東西。不過,該包不適用於Vista SP2或XP SP3。當我嘗試使用IMAPI_VistaSP1_x86.msu時,它只是說「更新不適用於您的系統」 http://thegreenbutton.com/forums/p/74230/364750.aspx#364750甚至似乎表明它應該包含在Vista中SP2 ... – Adion 2009-11-07 13:11:09