windows通信机制和dll机制

windows通信机制和dll机制

ID:34419449

大小:147.62 KB

页数:13页

时间:2019-03-06

windows通信机制和dll机制_第1页
windows通信机制和dll机制_第2页
windows通信机制和dll机制_第3页
windows通信机制和dll机制_第4页
windows通信机制和dll机制_第5页
资源描述:

《windows通信机制和dll机制》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、山东科技大学操作系统课程设计报告题目:Windows通信机制和DLL机制姓名:安文龙学号:200901051301班级:计算机09-2班指导老师:房胜学院:信息科学与工程学院目录一:设计要求二:背景知识三:设计环境四:设计思想五:程序结构六:关键代码分析:七:运行结果及分析:八:参考源代码一:设计要求编写一个Windows应用程序产生一个窗口,该窗口能对窗口上的消息进行响应,即当鼠标点击相应区域或菜单后,程序会调用自己编写的DLL函数给出结果。编写一个DLL,至少包含两个以上的接口函数供上述应用程序调用。使用C++Win32函数,而不是MFC框架,体会windows消息机制。二:背景知识

2、图形化基于视图的应用程序中,窗口就是屏幕上的一块区域,在这块区域中,应用程序取得用户的输入,显示程序的输出.窗口区是应用程序显示输出的部分.应用程序必须提供一个称为窗口函数的回调函数来处理窗口的输入,向客户区显示输出.动态链接库是应用程序的一部分,它的任何操作都是代表应用程序进行的,它作为模块被进程加载到自己的空间地址.动态链接库在编译时并不会被加载到可执行文件中,在程序运行时整个库的代码才会调入内存.WinMain入口点:函数功能:该函数被系统调用,作为一个32位应用程序的入口点。  函数原型:  intWINAPIWinMain(  HINSTANCEhInstance,  HINS

3、TANCEhPrevInstance,  LPSTRlpCmdLine,  intnCmdShow  );  参数:  hInstance:应用程序当前事例的句柄。  hPrevlnstance:应用程序的先事例的句柄。对于同一个程序打开两次,出现两个窗口第一次打开的窗口就是先前实例的窗口。对于一个32的位程序,该参数总为NULL。  lpCmdLine:指向应用程序命令行的空字符串的指针,不包括函数名。获得整个命令行,参看GetCommandLine。  nCmdShow:指明窗口如何显示。窗口类的注册与创建:函数原型:HWNDCreateWindow(  LPCTSTRlpClass

4、Name,  LPCTSTRlpWindowName,  DWORDdwStyle,  intx,  inty,  intnWidth,  intnHeight,  HWNDhWndParent,  HMENUhMenu,  HANDLEhlnstance,  LPVOIDlpParam);参数:lpClassName:窗口类的名字。lpWindowName:窗口名。dwStyle:指定创建窗口的风格。x:指定窗口的初始水平位置。y:指定窗口的初始垂直位置。nWidth:指定窗口的宽度。nHeight:指定窗口的高度。hWndParent:指向被创建窗口的父窗口或所有者窗口的句柄。hMe

5、nu:菜单句柄。hlnstance:与窗口相关的模块事例的句柄。lpParam:指向一个值的指针,该值传递给窗口WM_CREATE消息。DLL基本原理:        Windows系统平台上,你可以将独立的程序模块创建为较小的DLL(DynamicLinkableLibrary)文件,并可对它们单独编译和测试。在运行时,只有当EXE程序确实要调用这些DLL模块的情况下,系统才会将它们装载到内存空间中。这种方式不仅减少了EXE文件的大小和对内存空间的需求,而且使这些DLL模块可以同时被多个应用程序使用。MicrosoftWindows自己就将一些主要的系统功能以DLL模块的形式实现。例如

6、IE中的一些基本功能就是由DLL文件实现的,它可以被其它应用程序调用和集成。一般来说,DLL是一种磁盘文件(通常带有DLL扩展名,是标准win32可执行文件-“PE”格式),它由全局数据、服务函数和资源组成,在运行时被系统加载到进程的虚拟空间中,成为调用进程的一部分,进程中所有线程都可以调用其中的函数。如果与其它DLL之间没有冲突,该文件通常映射到进程虚拟空间的同一地址上。DLL模块中包含各种导出函数,用于向外界提供服务。Windows在加载DLL模块时将进程函数调用与DLL文件的导出函数相匹配。        在Win32环境中,每个进程都复制了自己的读/写全局变量。如果想要与其它进程

7、共享内存,必须使用内存映射文件或者声明一个共享数据段。DLL模块需要的堆栈内存都是从运行进程的堆栈中分配出来的。        DLL文件中包含一个导出函数表(存在于PE的.edata节中)。这些导出函数由它们的符号名和称为标识号的整数与外界联系起来。函数表中还包含了DLL中函数的地址。当应用程序加载DLL模块时时,它并不知道调用函数的实际地址,但它知道函数的符号名和标识号。动态链接过程在加载的DLL模块时动态建立一个函数调用与函数

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

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

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