我在用Nero SDK做一个将实时数据流直接写入DVD光盘的程序,尝试使用NeroBAOCreateHandle函数,可是不管怎样都返回NEROAPI_BURN_FAILED,哪位高人若能指点一二,本人将感激不尽。如果给出源程序,愿付人民币。
void CTestNeroDlg::Testcreatefile(NERO_SCSI_DEVICE_INFO* pnsdiDevice)
{
CString csError;
NERO_DEVICEHANDLE hDeviceHandle;
hDeviceHandle = NeroOpenDevice(pnsdiDevice);
if (!hDeviceHandle)
{
ShowString("Device could not be opened : "+(CString)pnsdiDevice->nsdiDeviceName);
return;
} NERO_BAO_HANDLE hNERO_BAO_HANDLE = NULL;
NERO_WRITE_BURN_AT_ONCE neroWriteBurnAtOnce;
memset(&neroWriteBurnAtOnce,0,sizeof(NERO_WRITE_BURN_AT_ONCE));
neroWriteBurnAtOnce.nwbaoSize = sizeof(NERO_WRITE_BURN_AT_ONCE);
neroWriteBurnAtOnce.nwbaoFSContainer = NeroCreateFileSystemContainer(NULL); NEROAPI_BURN_ERROR nErr = NeroBAOCreateHandle(hDeviceHandle,&neroWriteBurnAtOnce,
NBF_WRITE,//|NBF_CLOSE_SESSION|NBF_DISABLE_ABORT|NBF_DISABLE_EJECT|NBF_NO_BOOKTYPE_CHANGE,
0,NULL,
&hNERO_BAO_HANDLE,NULL);
if(NEROAPI_BURN_OK != nErr)
{
csError.Format("NeroBAOCreateHandle Error(%d)",nErr);
ShowString(csError);
}
else
{
nErr = NeroBAOCloseHandle(hNERO_BAO_HANDLE, NBAOF_CANCELED, NULL);
if(NEROAPI_BURN_OK != nErr)
{
csError.Format("NeroBAOCloseHandle Error(%d)",nErr);
gpCLtsNero->AppendString(csError);
}
} NeroCloseDevice(hDeviceHandle);
}
void CTestNeroDlg::Testcreatefile(NERO_SCSI_DEVICE_INFO* pnsdiDevice)
{
CString csError;
NERO_DEVICEHANDLE hDeviceHandle;
hDeviceHandle = NeroOpenDevice(pnsdiDevice);
if (!hDeviceHandle)
{
ShowString("Device could not be opened : "+(CString)pnsdiDevice->nsdiDeviceName);
return;
} NERO_BAO_HANDLE hNERO_BAO_HANDLE = NULL;
NERO_WRITE_BURN_AT_ONCE neroWriteBurnAtOnce;
memset(&neroWriteBurnAtOnce,0,sizeof(NERO_WRITE_BURN_AT_ONCE));
neroWriteBurnAtOnce.nwbaoSize = sizeof(NERO_WRITE_BURN_AT_ONCE);
neroWriteBurnAtOnce.nwbaoFSContainer = NeroCreateFileSystemContainer(NULL); NEROAPI_BURN_ERROR nErr = NeroBAOCreateHandle(hDeviceHandle,&neroWriteBurnAtOnce,
NBF_WRITE,//|NBF_CLOSE_SESSION|NBF_DISABLE_ABORT|NBF_DISABLE_EJECT|NBF_NO_BOOKTYPE_CHANGE,
0,NULL,
&hNERO_BAO_HANDLE,NULL);
if(NEROAPI_BURN_OK != nErr)
{
csError.Format("NeroBAOCreateHandle Error(%d)",nErr);
ShowString(csError);
}
else
{
nErr = NeroBAOCloseHandle(hNERO_BAO_HANDLE, NBAOF_CANCELED, NULL);
if(NEROAPI_BURN_OK != nErr)
{
csError.Format("NeroBAOCloseHandle Error(%d)",nErr);
gpCLtsNero->AppendString(csError);
}
} NeroCloseDevice(hDeviceHandle);
}
http://club.cdfreaks.com/showthread.php?t=106906#post683077
但在那里并没有给出如何使用 NeroBAOCreateHandle 函数啊。
[email protected]
不知道你用的是哪个版本的 Nero SDK
NeroSDK-1.07
不好意思,回复迟了。