200 分等你赚:为什么我不能用FreeLibrary 清除内存中的 Dll程序.(200分)

  • 主题发起人 主题发起人 大文
  • 开始时间 开始时间

大文

Unregistered / Unconfirmed
GUEST, unregistred user!
1、我有两个程序用Delphi写的,一个是ISAPI DLL程序,是在浏览时由 pws 装入内存,另外写了一个 EXE 程序专门用来清除内存中的 ISAPI DLL程序。<br><br>2、每次启动DLL时将 DLL 的 handle 存到一个ini 文件中,用EXE程序清除Dll程序时调用记录在ini文件中的 dll 的 handle 进行清除,为什么总是不能清除Dll文件?<br><br>3、DLL本身有没有清除的方法,我在DLL中加入一个 Freelibrary 方法后,退出是退出了但是将PWS也一起退出了,还会出现非法操作。<br><br>4、我查出:在 pws 中装入 Dll 时的 handle 和在 EXE中装入 Dll 的handle 差别很大,同是一个Dll文件为何差别这么大?<br><br>急盼高手解答,万分感谢!<br>
 
freelibrary只能清除"自己"调用的DLL,不能清除别人调用的DLL,<br>每个进程调用DLL都会获得一个Handle,相互之间当然不同。<br>你这种办法是行不通的。
 
哪,如果给Dll本身加一个清除方法,自己调用自己的清除方法能否将自己从内存中清除?<br><br>
 
很遗憾,<br>不行<br>会出错的<br>除非是... COM 技术<br>
 
如果你用的是IIS,用COM技术是可以的,ISAPI没试过的说。
 
你的问题好像是要在pws环境下释放DLL,据我所知唯一的方法就是Stop pws。<br><br>在IIS下还可以通过设置不cache Isapi来释放DLL,PWS好像没有这个选项。
 
还有好的方法吗?
 
I want to know.
 
看来只有接受温柔一刀的大案了,谢谢温柔一刀。<br>如果哪位高人还有好的答案请email:DavidWen@263.net通知,先行谢过。
 
后退
顶部