- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
windows考试
一、钩子函数
1.钩子函数作用:捕捉自己进程或其他进程发生的事件。
2.钩子函数类型:
1)局部的:局部钩子仅钩挂自己进程的事件。
2)远程的:可钩挂其它进程发生的事件,可分为:
a.基于线程的:捕获其他进程中某一特定线程的事件。
b.系统范围的:捕捉系统中所有进程将发生的事件消息。
何时调用钩子函数:安装的钩子的消息事件类型发生时调用钩子函数。
二、进程和线程
什么是进程:一个进程是一个正在执行的应用程序,它包含有:私有的虚拟地址空间、代码、数据和其它的操作系统资源,譬如进程可以存取的管道、文件和同步对象等等。
2.一个进程必须包含可执行模块、私有的地址空间和一个以上的线程。
3.进程ID是一个唯一值,而进程句柄是调用相关的WINDOWS API 后得到的一个返回值。
4.什么是线程:一个线程实际上是一个执行单元。
5.线程分为:1)处理用户界面的线程:该类线程产生自己的窗口并负责处理相关的窗口消息。
2)工作者线程:该类线程不用处理窗口界面,也就不用处理消息。
生成新进程和新线程的函数是:调用函数CreateProcess来生成新进程。
调用函数CreateThread来生成新线程。
线程间的通讯机制:1)使用全局变量:这种办法的缺点是在有多个线程存取同一个全局变量时,必须考虑同步的问题。
2)使用Windows消息传递机制:两个线程都是用户界面线程时,用该办法比较方便.如果其中有一个线程是工作者线程的话,就不能用该种方法,因为工作者线程没有消息队列。
3)使用事件:如果事件对象的状态是无信号的话,说明该线程正在睡眠或挂起。当一个线程的状态转成有信号时,WINDOWS就会唤醒该线程并且让它正常运行。
(填空)事件对象两种状态:1)开----有信号 2)关-----无信号
内存管理和文件输入输出
解释WIN32位平坦型地址模式含义:1)所有的段寄存器或描述符都指向同样的起始地址
2)所有的地址偏移都是32位的长度
比较win16和win32在内存管理上的区别?
Win16:有两种主要类型的API:1)全局:远过程调用
2)局部:近过程调用
在win16中,内存是通过一组叫selector(选择子)的值来访问的,默认的selector是data selector,near pointors(近指针)的操作就是在data selector上进行的。函数GlobalAlloc用来分配一个selector,这个selector可以被用来访问你申请的那块内存。你可以通过far pointor来访问这个selector中的内存。far pointor是由一个selector和一个near pointor组成的。任何一个程序或DLL的实体都有他们自己的data selector,它被称做HINSTANCE。被默认selector引用的内存,可以通过函数LocalInit把它转换成Local Heap。在win16中,LocalAlloc和GlobalAlloc是完全不一样的,LocalAlloc返回一个near pointor,而GlobalAlloc分配一个selector。
Win32:这两种内存模式是相同的,无论调用GlobalAlloc还是LocalAlloc,结果都是一样。在WIN32中也可以用“Local”替代内存分配API函数带有“Global”字样的函数中的“Global”,即用LocalAlloc、LocalLock等。
3.有一个"near pointor" p=0x1234,你的data selector的值为0x012f,那么当你写*p时,你访问的是内存012f:1234。
4.内存在heap上分配和stack上生成内存的区别:1)在函数中用int?i创建的变量是分配在stack中的。2)用new或malloc分配的是分配在堆中的。3)分配在栈中的有可能造成stack?flow。4)分配在堆中的取决于内存有多大。
5.Win32中分配和使用内存的过程是一样的:1)调用GlobalAlloc函数分配一块内存,该函数会返回分配的内存句柄。2)调用GlobalLock函数锁定内存块,该函数接受一个内存句柄作为参数,然后返回一个指向被锁定的内存块的指针。3)用该指针来读写内存。4)调用GlobalUnlock函数来解锁先前被锁定的内存,该函数使得指向内存块的指针无效。5)调用Global
您可能关注的文档
最近下载
- 材料成形原理_吴树森_答案(铸造)..pdf VIP
- 江苏小高考生物复习知识点总结.pdf VIP
- TCAMIE 12-2023 燃煤发电锅炉协同处置污泥技术规范.docx VIP
- 人教版2025高中地理必修一海水的运动(教学设计).docx VIP
- 重大节假日免收小型客车通行费实施方案.doc VIP
- (高清版)DB34∕T 4877-2024 智慧检验检测实验室建设指南.pdf VIP
- 影像科年终总结及工作计划PPT.pptx VIP
- 机械工程材料及其成型技术考试试题及其答案.pdf VIP
- 市发展研究中心关于市低空经济发展的调研报告.docx VIP
- 实验室生物安全应急预案应急预案(范文).docx VIP
原创力文档


文档评论(0)