网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > VC++ > 正文
VC++用 IMAPI 实现 CD 刻录和设备查找
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/15
下载{$ArticleTitle}原创论文样式
Opened = true;
pBuffer = new char[BufferSize];
UINT readed = 0L;
if( pBuffer != NULL ){
ZeroMemory( pBuffer, BufferSize );
ULONG written = 0;
while( (readed = file.Read( pBuffer, BufferSize )) > 0 ){
stream->Write( pBuffer, readed, &written );
m_ReadedSize += readed;
}
}
}
}catch(CFileException* e){
e->ReportError();
}
catch(){
}

if( isOpened ){
file.Close();
}
if( pBuffer != NULL ){
delete pBuffer;
pBuffer = NULL;
}
return m_ReadedSize;
}

HRESULT PerformDirectory( const char *path, IStorage *storage ){
HRESULT hr = 0L;
long hFile = 0;
USES_CONVERSION;

_finddata_t fileinfo;

int ch = _chdir( path );

if (( hFile = _findfirst( "*.*", &fileinfo ) ) != -1 ){
do{
if (!(fileinfo.attrib & _A_SUBDIR))
{
char filename[_MAX_PATH];
strcpy( filename, path );
strcat( filename, fileinfo.name );
CComPtr<IStream> fileStream;
hr = storage->CreateStream( T2W( fileinfo.name ), STGM_CREATE|STGM_SHARE_EXCLUSIVE|STGM_READWRITE, NULL, NULL, &fileStream );
ASSERT( SUCCEEDED( hr ) );
PerformFileStream( filename, fileStream );
}
else{
if ( strcmp(fileinfo.name,".") != 0 && strcmp(fileinfo.name,"..") != 0 )
{
char subdir[ _MAX_PATH ];
strcpy( subdir,path );
strcat( subdir,fileinfo.name);
strcat(subdir,"\\");
CComPtr<IStorage> sub;
hr = storage->CreateStorage( T2W( fileinfo.name ),
STGM_CREATE|STGM_SHARE_EXCLUSIVE|STGM_READWRITE, 0, 0,
&sub);
ASSERT( SUCCEEDED( hr ) );
hr = PerformDirectory( subdir, sub );
ASSERT( SUCCEEDED( hr ) );
}
}
}while (_findnext(hFile,&fileinfo) == 0);
_findclose(hFile);
}
return hr;
}

HRESULT CreateDirectoryStorage( const char *path, IStorage **stg )
{
HRESULT hr = 0L;
hr = StgCreateStorageEx( NULL,
STGM_CREATE|STGM_SHARE_EXCLUSIVE|STGM_READWRITE,
STGFMT_STORAGE,
// STGFMT_STORAGE => Structured Storage property sets
// STGFMT_FILE => NTFS property sets
0, NULL, NULL,
IID_IStorage,
reinterpret_cast<void**>(stg) );

if( FAILED(hr) ) throw L"Failed StgCreateStorageEx";
hr = PerformDirectory( path, (*stg) );
return hr;
}
这样我们就可以将这个创建好的IStorage对象写入到CD或DVD中了。
hr = jdm->AddData( storage, FALSE );
if( SUCCEEDED( hr ) ){
hr = dm->RecordDisc( FALSE, TRUE );

这里由于在调用了RecordDisc后方写入到CD,同时,这里将可能产生许多问题,如CD不能被刻录等问题都需要在这里进行处理。

VS.NET 2003/2005都提供了如何使用Imapi进行CD刻录的帮助,详细内容请参考相关的MSDN。

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号