|
|
|
|
|
|
|
|
在Microsoft Windows中,每个进程都有它自己的私有地址空间。当使用指针来引用内存时,指针的值将引用你自己进程的地址空间中的一个内存地址。你的进程不能创建一銎湟用属于另一个进程的内存指针。因此,如果你的进程存在一个错误,改写了一个随机地址系内存,那么这个错误不会影响另一个进程使用的内存。Windows 98 在Windows 98下运行的各个进程共享2 GB的地址空间,该地址空间从0x80000000至0xFFFFFFFF。只有内存映像文件和统组件才能映射到这个区域。 独立的地址空间对于编程人员和用户来说都是非常有利的。对于编程人员来说,系统更容易捕获随意的内存读取和写入操作。对于用户来说,操作系统将变得更加健壮,因个应用程序无法破坏另一个进程或操作系统的运行。当然,操作系统的这个健壮特性是要冻代价的,因为要编写能够与其他进程进行通信,或者能够对其他进程进行操作的应用程序难得多。 有些情况下,必须打破进程的界限,访问另一个进程的地址空间,这些情况包括: 当你想要为另一个进程创建的窗口建立子类时。 当你需要调试帮助时(例如,当你需要确定另一个进程正在使用哪个DLL时)。 当你想要挂接其他进程时。 这里将介绍两种方法,可以用来将DLL插入到另一个进程的地址空间中。一旦你的DLL进入另一个进程的地址空间,就可以对另一个进程为所欲为。这一定会使你非常害怕,因此,究竟应该怎样做,要三思而后行。 1 插入DLL:一个例子 假设你想为由另一个进程创建的窗口建立一个子类。你可能记得,建立子类就能够改变窗口的行为特性。若要建立子类页码:[1] [2] [3] [4] [5] [6] [7] 第1页、共7页 |
|
|
|
|
设为首页 | 加入收藏 | 广告服务 | 友情链接 | 版权申明
Copyriht 2007 - 2008 © 科普之友 All right reserved |