动态链接库课件.ppt

动态链接库课件.ppt

ID:57045534

大小:216.00 KB

页数:33页

时间:2020-07-28

动态链接库课件.ppt_第1页
动态链接库课件.ppt_第2页
动态链接库课件.ppt_第3页
动态链接库课件.ppt_第4页
动态链接库课件.ppt_第5页
资源描述:

《动态链接库课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、DLL动态链接库第十一章回顾WSAEventSelect模型完成端口本章目标进程的虚拟地址空间虚拟地址空间如何分区什么是动态链接库(DLL)为什么使用DLL如何实现DLL如何调用DLLDLL应用需要注意的问题进程的虚拟地址空间每个进程都被赋予它自己的虚拟地址空间。对于32位进程来说,这个地址空间是4GB由于每个进程可以接收它自己的私有的地址空间,因此当进程中的一个线程正在运行时,该线程可以访问只属于它的进程的内存。属于所有其他进程的内存则隐藏着,并且不能被正在运行的线程访问。虚拟地址空间如何分区每个进程的虚拟地址空间都要划分成各个分区。地址空间的分区是根据操

2、作系统的基本实现方法来进行的。不同的Windows内核,其分区也略有不同。NULL指针分配的分区进程地址空间的这个分区的设置是为了帮助程序员掌握NULL指针的分配情况。如果你的进程中的线程试图读取该分区的地址空间的数据,或者将数据写入该分区的地址空间,那么CPU就会引发一个访问违规。MS-DOS/16位Windows应用 程序兼容分区进程地址空间的这个4MB分区是Windows98需要的,目的是维护MS-DOS应用程序与16位应用程序之间的兼容性。不应该试图从32位应用程序来读取该分区的数据,或者将数据写入该分区。用户方式分区这个分区是进程的私有(非共享)地

3、址空间所在的地方。一个进程不能读取、写入、或者以任何方式访问驻留在该分区中的另一个进程的数据。对于所有应用程序来说,该分区是维护进程的大部分数据的地方。由于每个进程可以得到它自己的私有的、非共享分区,以便存放它的数据,因此,应用程序不太可能被其他应用程序所破坏,这使得整个系统更加健壮。64KB禁止进入的分区这个位于用户方式分区上面的64KB分区是禁止进入的,访问该分区中的内存的任何企图均将导致访问违规。Microsoft之所以保留该分区,是因为这样做将使得Microsoft能够更加容易地实现操作系统共享的MMF分区这个1GB分区是系统用来存放所有32位进程共

4、享数据的地方。例如,系统的动态链接库Kernel32.dll、AdvAPI32.dll、User32.dll和GDI32.dll等,全部存放在这个地址空间分区中,因此,所有32位进程都能很容易同时访问它们。内核方式分区这个分区是存放操作系统代码的地方。用于线程调度、内存管理、文件系统支持、网络支持和所有设备驱动程序的代码全部在这个分区加载。驻留在这个分区中的一切均可被所有进程共享。内存映射文件与虚拟内存一样,内存映射文件可以用来保留一个地址空间的区域,并将物理存储器提交给该区域。它们之间的差别是,物理存储器来自一个已经位于磁盘上的文件,而不是系统的页文件。一

5、旦该文件被映射,就可以访问它,就像整个文件已经加载内存一样。使用内存映射文件若要使用内存映射文件,必须执行下列操作步骤:1)创建或打开一个文件内核对象,该对象用于标识磁盘上你想用作内存映射文件的文件。2)创建一个文件映射内核对象,告诉系统该文件的大小和你打算如何访问该文件。3)让系统将文件映射对象的全部或一部分映射到你的进程地址空间中。清除内存映射文件当完成对内存映射文件的使用时,必须执行下面这些步骤将它清除:1)告诉系统从你的进程的地址空间中撤消文件映射内核对象的映像。2)关闭文件映射内核对象。3)关闭文件内核对象。什么是动态链接库(DLL)Dynamic

6、LinkLibrary(缩写DLL)在WINDOW平台上使用本身就是程序模块,即内部由可执行代码、数据或资源构成;类似于可执行文件EXE,但不能单独执行,需要WINDOW应用程序调用;动态链接库自从微软推出第一个版本的Windows操作系统以来,动态链接库(DLL)一直是Windows操作系统的基础。动态链接库通常都不能直接运行,也不能接收消息。它们是一些独立的文件,其中包含能被可执行程序或其它DLL调用来完成某项工作的函数。只有在其它模块调用动态链接库中的函数时,它才发挥作用。WindowsAPI中的所有函数都包含在DLL中。其中有3个最重要的DLL,Ke

7、rnel32.dll,它包含用于管理内存、进程和线程的各个函数;User32.dll,它包含用于执行用户界面任务(如窗口的创建和消息的传送)的各个函数;GDI32.dll,它包含用于画图和显示文本的各个函数。使用动态链接库的好处可以采用多种编程语言来编写。增强产品的功能。提供二次开发的平台。简化项目管理。可以节省磁盘空间和内存。有助于资源的共享。有助于实现应用程序的本地化。链接库类型在应用程序中加载DLL时,可以使用两种链接方法来调用导出的DLL函数。1。加载时进行链接。(静态链接)2。运行时进行链接。(动态链接)静态链接静态链接是指在程序进行链接时将要调用

8、的函数或者过程链接到可执行文件中,成为可执行文件的一

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。