- 1、本文档共50页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
下载
第2 2章 插入D L L和挂接A P I
在Microsoft Wi n d o w s 中,每个进程都有它自己的私有地址空间。当使用指针来引用内存时,
指针的值将引用你自己进程的地址空间中的一个内存地址。你的进程不能创建一个其引用属于
另一个进程的内存指针。因此,如果你的进程存在一个错误,改写了一个随机地址上的内存,
那么这个错误不会影响另一个进程使用的内存。
Windows 98 在Windows 98下运行的各个进程共享2 GB 的地址空间,该地址空间从
0 x 8 0 0 0 0 0 0 0至0 x F F F F F F F F 。只有内存映像文件和系统组件才能映射到这个区域。详
细说明参见第 1 3、1 4章和第1 7章的内容。
独立的地址空间对于编程人员和用户来说都是非常有利的。对于编程人员来说,系统更容
易捕获随意的内存读取和写入操作。对于用户来说,操作系统将变得更加健壮,因为一个应用
程序无法破坏另一个进程或操作系统的运行。当然,操作系统的这个健壮特性是要付出代价的,
因为要编写能够与其他进程进行通信,或者能够对其他进程进行操作的应用程序将要困难得
多。
有些情况下,必须打破进程的界限,访问另一个进程的地址空间,这些情况包括:
• 当你想要为另一个进程创建的窗口建立子类时。
• 当你需要调试帮助时(例如,当你需要确定另一个进程正在使用哪个 D L L时)。
• 当你想要挂接其他进程时。
本章将介绍若干种方法,可以用来将 D L L插入到另一个进程的地址空间中。一旦你的 D L L
进入另一个进程的地址空间,就可以对另一个进程为所欲为。这一定会使你非常害怕,因此,
究竟应该怎样做,要三思而后行。
22.1 插入D L L:一个例子
假设你想为由另一个进程创建的窗口建立一个子类。你可能记得,建立子类就能够改变窗
口的行为特性。若要建立子类,只需要调用S e t Wi n d o w L o n g P t r函数,改变窗口的内存块中的窗
口过程地址,指向一个新的(你自己的)W n d P r o c 。Platform SDK文档说,应用程序不能为另
一个进程创建的窗口建立子类。这并不完全正确。为另一个进程的窗口建立子类的关键问题与
进程地址空间的边界有关。
当调用下面所示的S e t Wi n d o w s L o n g P t r函数,建立一个窗口的子类时,你告诉系统,发送
到或者显示在h w n d 设定的窗口中的所有消息都应该送往M y S u b c l a s s P r o c ,而不是送往窗口的正
常窗口过程:
换句话说,当系统需要将消息发送到指定窗口的 W n d P r o c 时,要查看它的地址,然后直接
调用W n d P r o c 。在本例中,系统发现M y S u b c l a s s P r o c 函数的地址与窗口相关联,因此就直接调
用M y S u b c l a s s P r o c 函数。
为另一个进程创建的窗口建立子类时遇到的问题是,建立子类的过程位于另一个地址空间
中。图2 2 - 1 显示了一个简化了的图形,说明窗口过程是如何接受消息的。进程 A正在运行,并
516计计第四部分 动态链接库
下载
且已经创建了一个窗口。文件 U s e r 3 2 . d l l被映射到进程A 的地址空间中。对U s e r 3 2 . d l l 文件的映
射是为了接收和发送在进程 A 中运行的任何线程创建的任何窗口中发送和显示的消息。当
U s e r 3 2 . d l l 的映像发现一个消息时,它首先要确定窗口的W n d P r o c 的地址,然后调用该地址,传
递窗口的句柄、消息和w P a r a m和l P a r a m值。当W n d P r o c处理该消息后,U s e r 3 2 . d l l便循环运行,
并等待另一个窗口消息被处理。
进程A 进程B
图22-1 进程B 中的线程试图为进程A 中的线程创建的窗口建立子类
现在假设你的进程是进程B ,你想为进程A 中的线程创建的窗口建立子类。你在进程B 中
您可能关注的文档
- ptoE安装指南.doc
- SSH:UNIX-UNIX环境高级编程16.pdf
- SSH:UNIX-UNIX环境高级编程17.pdf
- SSH:UNIX-UNIX环境高级编程19.pdf
- WINDOWS核心编程术现19.pdf
- WINDOWS核心编程术现20.pdf
- WINDOWS核心编程术现23.pdf
- WINDOWS核心编程术现24.pdf
- WINDOWS核心编程术现25.pdf
- WINDOWS核心编程术现26.pdf
- 剧本杀行业报告:内容创作规范与剧本市场拓展策略.docx
- 剧本杀行业区域市场区域文化特色与市场潜力分析报告.docx
- 剧本杀行业区域市场拓展实战案例研究.docx
- 剧本杀行业区域市场拓展路径与模式探索报告.docx
- 剧本杀行业区域市场竞争态势与品牌差异化策略研究报告.docx
- 剧本杀行业2025年西北区域市场市场细分领域竞争态势与品牌竞争策略分析研究报告.docx
- 剧本杀行业2025年西北市场拓展前景预测报告.docx
- 剧本杀行业2025年长沙市场发展潜力分析报告.docx
- 剧本杀行业2025年长三角市场竞争策略与布局分析.docx
- 医疗行业数据合规:2025年数据安全法实施后的合规监管挑战与应对.docx
最近下载
- 手术室人员行为管理与规范.pptx VIP
- 2025年呼和浩特市土默特左旗社区工作者招聘考试试题 .pdf VIP
- 卫生院优质服务基层行创建资料(1.1.2主要任务).docx VIP
- 2025年教职工疗休养服务项目212页.docx VIP
- 2025年内蒙古自治区中考语文试题卷(含答案解析).docx
- 中学生英才计划面试常见问题.docx VIP
- 社会组织矛盾纠纷排查化解工作总结.pptx VIP
- 近十年管综数学真题.pdf VIP
- 13、安放式支管台组对焊接.pptx VIP
- SIEMENS西门子 SIMATIC ET 200SP 电机启动器 (3RK1308‑0..00‑0CP0)设备手册.pdf VIP
文档评论(0)