请教IStream和IFileSystemImage的释放问题

问题描述

在刻录时,采用SHCreateStreamOnFile的方式读文件.然后把IStreamAdd到IFileSystemImage的root里.如果不是空盘的需要调用IFileSystemImage的ImportFileSystem函数.然后调用IFileSystemImage的Creatresult函数生成一个结果的IStream用来刻录.我现在在刻录空盘后,80%可能释放掉文件,也就是说用SHCreateStreamOnFile读的文件能够被释放.但是如果刻录非空盘,调用ImportFileSystem函数的话,就不能释放文件,文件完全不能被删除.为什么资源没有被释放掉哪?相关代码片断如下:读文件代码片断:try{Win32.SHCreateStreamOnFile(filePath,Win32.STGM_READ|Win32.STGM_SHARE_DENY_WRITE,refstream);if(stream!=null){rootItem.AddFile(displayName,stream);returntrue;}}catch(Exceptionex){}finally{if(stream!=null){intiReturn=Marshal.FinalReleaseComObject(stream);}}生成FsiFileMsftFileSystemImagefileSystemImage=null;IFileSystemImageResultfileSystemImageResult=null;IFsiDirectoryItemrootItem=null;try{fileSystemImage=newMsftFileSystemImage();fileSystemImage.ChooseImageDefaults(discRecorder);fileSystemImage.FileSystemsToCreate=FsiFileSystems.FsiFileSystemJoliet|FsiFileSystems.FsiFileSystemISO9660;fileSystemImage.VolumeName=m_BurnData.ClientName;fileSystemImage.Update+=fileSystemImage_Update;if(multisessionInterfaces!=null){fileSystemImage.MultisessionInterfaces=multisessionInterfaces;FsiFileSystemsfsi=fileSystemImage.ImportFileSystem();fsi=fileSystemImage.IdentifyFileSystemsOnDisc(discRecorder);}fileSystemImageResult=fileSystemImage.CreateResultImage();dataStream=fileSystemImageResult.ImageStream;}finally{if(rootItem!=null){Marshal.FinalReleaseComObject(rootItem);}if(fileSystemImageResult!=null){Marshal.FinalReleaseComObject(fileSystemImageResult);}if(fileSystemImage!=null){Marshal.FinalReleaseComObject(fileSystemImage);}}

解决方案

解决方案二:
等待高手指点~
解决方案三:
我也遇到了同样的问题了,添加的文件在创建ISO镜像之后不能释放。求解答。。

时间: 2024-10-24 11:21:45

请教IStream和IFileSystemImage的释放问题的相关文章

VC显示网页验证码、模拟CSDN网页登录

这两天,本来想花点时间研究一下QQ空间.农场外挂,于是抓包分析一了下,只可惜,在QQ网页登录时进行了加密处理,可惜我对网页编程一窍不通.有些朋友曾讲过那些是通过JS代码进行加密,可惜我JS也是一片空白,真是"出师未杰身先死",惭愧惭愧...... 于是只好挑CSDN这类简易一些的尝试学习一下(仅供学习交流),下面是学习笔记: 程序运行截图: 1.本机环境:Windows XP SP3.ADSL 2.开发工具:WildPackets OmniPeek V5.1.4            

IPicture总结

1.利用IPicture接口加载.显示图片 IPicture接口管理一个图片对象和它的属性.图片对象提供对Bitmap Icon Metafile的语言不相关的抽象支持.图像对象的主要接口是IPicture和IPictureDisp.IPictureDisp从IDispatch继承,提供了通过自动化访问图片属性的能力.图片对象可通过OleCreatePictureIndirect创建.关于IPicture支持的其他接口和方法可以看MSDN,一般创建图片对象可以用OleLoadPicture函数,

请教关于使用CDO将Html转换成Mht,html资源不能释放的问题

问题描述 publicvoidHtmlToMht(stringsrc,stringdst){CDO.Messagemsg=newCDO.MessageClass();CDO.Configurationc=newCDO.ConfigurationClass();msg.Configuration=c;msg.CreateMHTMLBody(src,CDO.CdoMHTMLFlags.cdoSuppressNone,"","");ADODB.Streamstream=m

调用Sqlhelper请教如何释放DB资源?

问题描述 求助我外部调用的释放资源调用方式是调用Dispose()还是Dispose(true)usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Data;usingSystem.Data.SqlClient;usingSystem.Collections;usingMicrosoft.ApplicationBlocks.Data;namespaceADSearchS

耗时计算-请教一下Matlab怎么计算代码的执行耗时

问题描述 请教一下Matlab怎么计算代码的执行耗时 Matlab怎么计算代码的执行耗时,要求支持code generation 不要说coder.extrinsic 'tic','toc',这个不支持code generation 解决方案 Profile(分析) 在加速你的matlab程序之前,你需要知道你的代码哪一部分运行最慢.matlab提供个简单的机制,让你能够知道你 的代码的某一部分运行所占用CPU时间.通过在代码段开始添加tic,及在结束添加toc:matlab就能计算出这一代 码

c3p0连接池-c3p0 连接不释放 请路过的大神过来看看

问题描述 c3p0 连接不释放 请路过的大神过来看看 配置文件如下 <?xml version="1.0" encoding="UTF-8"?> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://w

python调用dll的释放问题

问题描述 python调用dll的释放问题 小弟用python 写了个调用SiInterface.dll的adaptor.exe这里有调用win32api.FreeLibrary()释放dll了,运行该adaptor.exe后,做完一个交易后,其他程序调用这个dll做交易就会加载不到这个dll请问是我没释放成功SiIterface.dll 还是adaptor.exe打开运行后,他就一直占用着SiInterface.dll因为在使用adaptor.exe做完一个交易后关闭该exe,再使用别的程序调

请教java线程使用的一个问题

问题描述 请教java线程使用的一个问题 在web项目中.假设在页面上点了A按钮,然后后台某种需求,新建了A线程,干某件事.过了一会儿.我再点A按钮,又会启动一个新线程,干同一件事.请问一下,这样做好不好?或者说在后面点A按钮的时候,直接使用A线程干事而不是重新创建.请问这样做行不行?行的话怎么弄.谢谢 解决方案 看你的线程是干嘛用的.如果你的线程只有一个单一的事件待解决(比如说要执行一个大量计算的函数,但不想阻塞主界面),这样做可以,但是这时候可能使用线程池更适合.如果你的线程是要一直活着并长

请教异步BeginAcceptTcpClient后,系统会自动创建新线程嘛?

问题描述 在网上搜索到的资料上说引用 程序执行BeginAcceptTcpClient方法后,即在线程池中自动创建需要的线程,同时在自动创建的线程中监听客户端连接请求. 不知道是不是这样.请教大神其中的细节,或者出处.谢谢! 解决方案 解决方案二:这肯定是有误导成分的.系统级的东西是事件驱动的,哪里跟初学者一样去搞什么线程进行"死循环.阻塞.额外监听"呢.这个方法注册了回调.当系统收到消息后,才会创建(或者说使用)I/O子线程回调.解决方案三:谢谢.现在的程序如下//这是一个新线程pr