Windows程序设计

上传人:工**** 文档编号:509001242 上传时间:2023-10-22 格式:DOC 页数:8 大小:128.50KB
返回 下载 相关 举报
Windows程序设计_第1页
第1页 / 共8页
Windows程序设计_第2页
第2页 / 共8页
Windows程序设计_第3页
第3页 / 共8页
Windows程序设计_第4页
第4页 / 共8页
Windows程序设计_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《Windows程序设计》由会员分享,可在线阅读,更多相关《Windows程序设计(8页珍藏版)》请在金锄头文库上搜索。

1、Windows程序代码#includeint main() MessageBox(Null,wangrusheng,error,MB_ok); return 0; 欢迎来到黑客编程世界提示动态链接库动态链接库英文为DLL,是Dynamic Link Library 的缩写形式,DLL是一个包含可由多个程序同时使用的代码和数据的库,DLL不是可执行文件。动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数。函数的可执行代码位于一个 DLL 中,该 DLL 包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数。DLL 还有助于共享数据和资源。多个应用程序可同时访问内存中单个DLL

2、 副本的内容。DLL 是一个包含可由多个程序同时使用的代码和数据的库。 动态链接库可以更为容易地将更新应用于各个模块,而不会影响该程序的其他部分。例如,您有一个大型网络游戏,如果把整个数百MB甚至数GB的游戏的代码都放在一个应用程序里,日 动态链接库后的修改工作将会十分费时,而如果把不同功能的代码分别放在数个动态链接库(DLL)中,您无需重新生成或安装整个程序就可以应用更新。下表说明了 Windows操作系统中的一些作为 DLL 实现的文件编写动态链接库#ifdef CustomDLL_EXPORTS#define CustomDLL_API_declspec(dllexport)#else#

3、define CustomDLL_API_declspec(dllinport)#endifCustomDLL_APIint DLLFuncAdd(int a,int b);#include CustomDll.h#includeBOOL APIENTRY DLLMain(HMODULE hModule,DWORD u1_reason_for_call,LPVOID lpReserved) switch (u1_reason_for_call) case DLL_PROCESS_ATTACH: case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: ca

4、se DLL_PROCESS_DETACH: break; return TRUE; int DLLFuncADD(int a,int b) return a+b; DLL_PROCESS_ATTACH :表示动态链接库刚被某个进程加载,程序可以在这里做一些初始化工作,并返回TRUE表示初始化成功,这给动态链接库一个选择是否被载入的机会DLL_PROCESS_DETACH:表示动态链接库被卸载,关闭文件,释放内存DLL_THREAD_ATTACH: 表示应用程序创建一个新的线程DLL_THREAD_DETACH: 表示某个线程正常终止DLL函数内部函数 导出函数DLL导出函数的声明和调用声明导

5、出函数: DLL内的函数分两种:只在DLL内部调用的、DLL导出函数供应用程序调用 声明导出函数两种方法:(1)在函数声明中加上externC int _declspec(dllexport)add(int x,int y);/一定要加上extern C(2)采用模块定义(.def)文件声明。.def文件为链接器提供了有关被链接程序的导出、属性和其他信息。MFC AppWizard为MFC DLL创建一个.def文件,而Win32 DLL,用户必须自己创建.def文件。.def定义示例代码如下:;dll.def:导出DLL函数LIBRARY dllTestDESCRIPTION mathEXP

6、ORTS GlobleVar DATA add 1 sub 2.def文件的规则为:(1)LIBRARY语句指出DLL的名字(2)EXPORTS语句后列出一系列函数名称。可以在导出函数后加n,表示函数序号。(3);表示注释,且注释不能和语句共享一行。(4)可选部分DESCRIPTION语句,原来描述DLL的用途。(5)变量名 DATA:导出全局变量DLL的调用(加载)方式:(1)动态调用(显式链接) LoadLibrary() GetProcAddress() FreeLibrary()(2)静态调用(隐式链接) 由编译系统完成对DLL的加载和应用程序结束时对DLL的卸载。需要做两个工作:a:

7、将编译dll工程所得的.lib和.dll文件放入调用dll工程所在的路径。 包含.lib文件:#pragma comment(lib,dllTest.lib) or project-setting-link-.b:声明导入函数,extern C int _declspec(dllimport) add(int x,int y)中的_declspec(dllimport)/must add extern C 使用动态链接库1. 隐式动态链接模块可以像调用本地函数一样调用其他模板导入的函数2. 显示动态链接调用DLL导出函数1.声明要导出的DLL函数2.加载目标DLL,利用LoadLibrary(

8、)函数加载指定目录下的DLL库到进程的虚拟地址空间LoadLibrary()函数声明:(加载指定名称的动态链接库)HMODULE WINAPILoadLibrary( LPCTSTR lpFileName); 3. 由GetProcAddress()函数来获得目标DLL中导出函数的地址GetProcAddress()函数声明:FARPROC GetProcAddress( HMODULE hModule, LPCSTR lpProcName );作用:获得目标动态链接库中导出函数的地址进程与线程的概述1. 进程:2.进程是操作系统结构的基础;是一个正在执行的程序;计算机中正在运行的程序实例;可

9、以分配给处理器并由处理器执行的一个实体;由单一顺序的执行显示,一个当前状态和一组相关的系统资源所描述的活动单元。 2. 线程:线程是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。另外,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。由于线程之间的相互制约,致使线程在运行中呈现出间断性。线程也有就绪、阻塞和运行三种基本状态。每一个程序都至少有一个线程,若程序

10、只有一个线程,那就是程序本身。线程是程序中一个单一的顺序控制流程。线程和进程的区别 :子进程和父进程有相同的代码段,不同的数据段,而多个线程则共享数据空间,每个线程有自己的执行堆栈和程序计数器为其执行上下文。多线程主要是为了节约CPU时间,发挥利用,根据具体情况而定。线程的运行中需要使用计算机的内存资源和CPU。TCP/IP协议传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。TCP/IP 定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。协议采用了4层的层级结构,每一层

11、都呼叫它的下一层所提供的网络来完成自己的需求。通俗而言:TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。而IP是给因特网的每一台电脑规定一个地址。 TCP/IP结构对应OSIOSI中的层功能TCP/IP协议族应用层文件传输,电子邮件,文件服务,虚拟终端TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 等等表示层翻译、加密、压缩没有协议会话层对话控制、建立同步点(续传)没有协议传输层端口寻址、分段重组、流量、差错控制TCP,UDP网络层逻辑寻址、路由选择IP,ICMP,OSPF,EIGRP,IGMP,RIP数据链路层成帧、物理寻

12、址、流量,差错,接入控制SLIP,CSLIP,PPP,MTU,ARP,RARP物理层设置网络拓扑结构、比特传输、位同步ISO2110,IEEE802,IEEE802.2 应用层 表示层 会话层主机到主机层(TCP)(又称传输层)传输层网络层(IP)(又称互联层)网络层网络接口层(又称链路层)数据链路层物理层OSI中的层功能TCP/IP协议族应用层文件传输,电子邮件,文件服务,虚拟终端TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 等等表示层数据格式化,代码转换,数据加密没有协议会话层解除或建立与别的接点的联系没有协议传输层提供端对端的接口TCP,UDP网络层为数据包选择路

13、由IP,ICMP,OSPF,EIGRP,IGMP,RIP数据链路层传输有地址的帧以及错误检测功能SLIP,CSLIP,PPP,MTU,ARP,RARP物理层以二进制数据形式在物理媒体上传输数据ISO2110,IEEE802,IEEE802.2WinsockWindows下网络编程的规范Windows Sockets是Windows下得到广泛应用的、开放的、支持多种协议的网络编程接口。 1.设置参数在一次网络通信/连接中有以下几个参数需要被设置:本地IP地址 - 本地端口号 - 对方端口号 - 对方IP地址。左边两部分称为一个半关联,当与右边两部分建立连接后就称为一个全关联。在这个全关联的套接口上可以双向的交换数据。如果是使用无连接的通信则只需要建立一个半关联,在发送和接收时指明另一半的参数就可以了,所以可以说无连接的通信是将数据发送到另一台主机的指定端口。此外不论是有连接还是无连接的通信都不需要双方的端口号相同。Winsock相关函数1. WSAStarup2. Socket3. Connect4. Bind5. Listen6. Accept7. Send8. Recv9. Sendto10. Recvfrom11. WSAC

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号