C++ (Qt)HRESULT put_ClientName( [in] BSTR value);
C++ (Qt)BSTR imya=BSTR(_T("burning"));HRESULT res=discformatdata2->put_ClientName(imya)if (!SUCCEEDED(res)){ printf("0x%08x\n",res);}
0xC0aa0408
C++ (Qt)BSTR appName = ::SysAllocString(L"Imapi2Sample");hr = eraser->put_ClientName(appName);
C++ (Qt)HRESULT MainWindow::writedataoncd(){ IDiscFormat2Data *discformatdata=NULL; IDiscRecorder2 *discrecorder=NULL; IDiscMaster2 *master=NULL; IFileSystemImage * image = NULL; IFileSystemImageResult * fsiresult = NULL; FsiFileSystems fileSystem; IFsiDirectoryItem *root; IStream *stream; BSTR dir = ::SysAllocString(L"C:\\test"); //инициализируем идискформатдата 2 HRESULT m_hResult=CoCreateInstance(__uuidof(MsftDiscFormat2Data),NULL,CLSCTX_ALL, __uuidof(IDiscFormat2Data),(void**)&discformatdata); if (!SUCCEEDED(m_hResult)) { msg.setText(QString::fromLocal8Bit("Дискформатдата не проинициализирована")); msg.exec(); } //инициализируем идискрекордер m_hResult = CoCreateInstance(__uuidof(MsftDiscRecorder2), NULL, CLSCTX_INPROC_SERVER, __uuidof(IDiscRecorder2), (void**)&discrecorder); if (!SUCCEEDED(m_hResult)) { msg.setText(QString::fromLocal8Bit("ошибка инициализации")); msg.exec(); } BSTR info=NULL; m_hResult = CoCreateInstance(__uuidof(MsftDiscMaster2), NULL, CLSCTX_INPROC_SERVER, __uuidof(IDiscMaster2), (void**)&master); HRESULT res=master->get_Item(0,&info); //получили полное имя привода в системе if (FAILED(res)) //если не получили дискмастер { msg.setText(QString::fromLocal8Bit("Не инициализирован идискмастер")); msg.exec(); } //получаем имя res=master->get_Item(0,&info); if (!SUCCEEDED(res)) { msg.setText("ошибка"); msg.exec(); } //инициализируем идискрекордер (привод 0-первый привод в системе res=discrecorder->InitializeDiscRecorder(info); if (!SUCCEEDED(res)) { msg.setText("ошибка"); msg.exec(); } BSTR appname=::SysAllocString(L"burning"); res=discrecorder->AcquireExclusiveAccess(false,appname); if (!SUCCEEDED(res)) { msg.setText("не получили экслюзивный доступ к устройству"); msg.exec(); } res=discformatdata->put_Recorder(discrecorder); if (!SUCCEEDED(res)) { msg.setText("ошибка"); msg.exec(); } //BSTR appname=::SysAllocString(L"burning"); res=discformatdata->put_ClientName(appname); if (!SUCCEEDED(res)) { msg.setText("ошибка"); msg.exec(); } SAFEARRAY *value=NULL; res=discformatdata->get_SupportedMediaTypes(&value); if (!SUCCEEDED(res)) { msg.setText("ошибка"); msg.exec(); } //не закрываем диск для последующей записи res=discformatdata->put_ForceMediaToBeClosed(VARIANT_FALSE); if (!SUCCEEDED(res)) { msg.setText("ошибка"); msg.exec(); } //discformatdata-> res = CoCreateInstance(CLSID_MsftFileSystemImage, NULL, CLSCTX_ALL, __uuidof(IFileSystemImage), (void**)&image); if (!SUCCEEDED(res)) { msg.setText("ошибка"); msg.exec(); } res=discformatdata->put_ForceOverwrite(true); if (!SUCCEEDED(res)) { msg.setText("ошибка"); msg.exec(); } //УСТАНАВЛИВАЕМ ФАЙЛОВУЮ СИСТЕМУ ОБРАЗА fileSystem=FsiFileSystemUDF; res=image->put_FileSystemsToCreate(fileSystem); if (!SUCCEEDED(res)) { msg.setText("ошибка"); msg.exec(); return res; } BSTR mt=BSTR(L"metka"); res=image->put_VolumeName(mt); if (!SUCCEEDED(res)) { msg.setText("ошибка"); msg.exec(); } res=image->get_Root(&root); if (SUCCEEDED(res)) { root->AddTree(dir,false); } res=image->CreateResultImage(&fsiresult); if (SUCCEEDED(res)) { res=fsiresult->get_ImageStream(&stream); if (SUCCEEDED(res)) { msg.setText("образ готов для записи"); msg.exec(); } } if (SUCCEEDED(res)) { res=discformatdata->Write(stream); } if (stream) { stream->Release(); stream=NULL; } if (SUCCEEDED(res)) { printf("disc uspeshnp zapisan\n"); IMAPI_MEDIA_WRITE_PROTECT_STATE value = (IMAPI_MEDIA_WRITE_PROTECT_STATE)0; res = discformatdata->get_WriteProtectStatus(&value); } if (!SUCCEEDED(res)) { printf("oshibka zapisi na disk=0x%08x\n\n",res); } discrecorder->EjectMedia(); if (SUCCEEDED(res)) { res = discformatdata->put_Recorder(NULL); } if (image) { image->Release(); image = NULL; } if (fsiresult) { fsiresult->Release(); fsiresult=NULL; } if (discformatdata) { discformatdata->Release(); discformatdata=NULL; } if (discrecorder) { discrecorder->Release(); discrecorder=NULL; } return res; }
C++ (Qt)res=discformatdata->Write(stream);
C++ (Qt)0x80004005
C++ (Qt)IDiscFormat2Data->write