我正在尝试用C ++编写一个能够刻录音频CD的程序,而且轨道之间没有间隙。
从我发现的情况来看,最近才有可能使用IMAPI,但是应该可以使用Windows XP SP2和Vista SP1。
问题是我找不到任何关于如何执行此操作的示例代码。
我找到的是我需要使用IRawCDImageCreator
,IDiscFormat2RawCD
可以使用MsftDiscFormat2RawCD
进行刻录,并公开AddTrack函数。
首先,我使用以下代码成功创建IDiscFormat2RawCD *rawCD;
if (!SUCCEEDED(CoCreateInstance(__uuidof(MsftDiscFormat2RawCD), NULL, CLSCTX_INPROC_SERVER, __uuidof(IDiscFormat2RawCD), (LPVOID*)&rawCD)))
return -1;
对象。
IRawCDImageCreator *imageCreator;
HRESULT res = CoCreateInstance(__uuidof(MsftRawCDImageCreator), NULL, CLSCTX_INPROC_SERVER, __uuidof(IRawCDImageCreator), (LPVOID*)&imageCreator);
if (!SUCCEEDED(res))
return -2;
接下来我尝试创建IRawCDImageCreator:
E_NOINTERFACE
但是失败了,错误代码为E_NOINTERFACE
。
The IMAPI Interfaces页面似乎表明我正在使用正确的对象。
关于{{1}}我确实找到了this blog post,其中提到了有关公寓线程的内容,但我不确定如何更改此内容,以及为什么创建第一个对象可以毫无问题地工作。