Windows通信机制及DLL机制.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Windows通信机制及DLL机制

山东科技大学 操作系统课程设计报告 题目:Windows通信机制和DLL机制 姓名:安文龙 学号:200901051301 班级:计算机09-2班 指导老师:房胜 学院:信息科学与工程学院 目录 一:设计要求 二:背景知识 三:设计环境 四:设计思想 五:程序结构 六:关键代码分析: 七:运行结果及分析: 八:参考源代码 一:设计要求 编写一个Windows应用程序产生一个窗口,该窗口能对窗口上的消息进行响应,即当鼠标点击相应区域或菜单后,程序会调用自己编写的DLL函数给出结果。 编写一个DLL,至少包含两个以上的接口函数供上述应用程序调用。 使用C++Win32函数,而不是MFC框架,体会windows消息机制。 二:背景知识 图形化基于视图的应用程序中,窗口就是屏幕上的一块区域,在这块区域中,应用程序取得用户的输入,显示程序的输出.窗口区是应用程序显示输出的部分.应用程序必须提供一个称为窗口函数的回调函数来处理窗口的输入,向客户区显示输出. 动态链接库是应用程序的一部分,它的任何操作都是代表应用程序进行的,它作为模块被进程加载到自己的空间地址.动态链接库在编译时并不会被加载到可执行文件中,在程序运行时整个库的代码才会调入内存. WinMain入口点: 函数功能:该函数被系统调用,作为一个32位应用程序的入口点。   函数原型:   int WINAPI WinMain(   HINSTANCE hInstance,   HINSTANCE hPrevInstance,   LPSTR lpCmdLine,   int nCmdShow   );   参数:   hInstance:应用程序当前事例的句柄。   hPrevlnstance:应用程序的先事例的句柄。对于同一个程序打开两次,出现两个窗口第一次打开的窗口就是先前实例的窗口。对于一个32的位程序,该参数总为NULL。   lpCmdLine:指向应用程序命令行的空字符串的指针,不包括函数名。获得整个命令行,参看GetCommandLine。   nCmdShow:指明窗口如何显示。 窗口类的注册与创建: 函数原型: HWND CreateWindow(   LPCTSTR lpClassName,   LPCTSTR lpWindowName,   DWORD dwStyle,   int x,   int y,   int nWidth,   int nHeight,   HWND hWndParent,   HMENU hMenu,   HANDLE hlnstance,   LPVOID lpParam); 参数: lpClassName:窗口类的名字。 lpWindowName:窗口名。 dwStyle:指定创建窗口的风格。 x:指定窗口的初始水平位置。 y:指定窗口的初始垂直位置。 nWidth:指定窗口的宽度。 nHeight:指定窗口的高度。 hWndParent:指向被创建窗口的父窗口或所有者窗口的句柄。 hMenu:菜单句柄。 hlnstance:与窗口相关的模块事例的句柄。 lpParam:指向一个值的指针,该值传递给窗口 WM_CREATE消息。 DLL 基本原理: ???????? Windows系统平台上,你可以将独立的程序模块创建为较小的DLL(Dynamic Linkable Library)文件,并可对它们单独编译和测试。在运行时,只有当EXE程序确实要调用这些DLL模块的情况下,系统才会将它们装载到内存空间中。这种方式不仅减少了EXE文件的大小和对内存空间的需求,而且使这些DLL模块可以同时被多个应用程序使用。Microsoft Windows自己就将一些主要的系统功能以DLL模块的形式实现。例如IE中的一些基本功能就是由DLL文件实现的,它可以被其它应用程序调用和集成。一般来说,DLL是一种磁盘文件(通常带有DLL扩展名,是标准win32可执行文件-“PE”格式),它由全局数据、服务函数和资源组成,在运行时被系统加载到进程的虚拟空间中,成为调用进程的一部分,进程中所有线程都可以调用其中的函数。如果与其它DLL之间没有冲突,该文件通常映射到进程虚拟空间的同一地址上。DLL模块中包含各种导出函数,用于向外界提供服务。Windows在加载DLL模块时将进程函数调用与DLL文件的导出函数相匹配。 ???????? 在Win32环境中,每个进程都复制了自己的读/写全局变量。如果想要与其它进程共享内存,必须使用内存映射文件或者声明一个共享数据段。DLL模块需要的堆栈内存都是从运行进程的堆栈中分配出来的。 ???????? DLL文件中包含一个导出函数表(存在于PE的.edata节中)。这些导出函数由

文档评论(0)

ktj823 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档