001 Windows简介
#Windows 简介
Windows版本历史
16位图形用户界面
16位和32位混合操作系统
64位操作系统
移动设备操作系统
NT架构
#Windows与编程语言
Windows API
SDK&API&MFC
SDK (SoftWare Development Kit)
API (Application Programming Interface)
MFC (Microsoft Foundation Classes)
Windows API分类
基础服务 (Base Service)
图形设备接口 (GDI)
图形化用户界面 (GUI)
通用对话框链接库 (Common Contral Library)
通用控件链接库 (Common Control Library)
Windows外壳 (Windows Shell)
网络服务 (Network Services)
多媒体相关API
封装库
#Windows简介
Microsoft Windows (中文有时翻译 微软视窗,通常不做翻译) 是微软公司推出的一系列操作系统,它问世于1985年,起初是 MS-DOS 之下的桌面环境,其后续版本逐渐发展成为主流要以个人电脑和服务器用户设计的操作系统,并最终获得了世界个人电脑操作系统的垄断地位,此操作系统可以在几种不同类型的平台上运行,如个人电脑(PC),移动设备,服务器(Server)和嵌入式操作系统等等,其中在个人电脑的领域内最为普遍,在2004年国际数据信息公司一次有关未来发展趋势的会议上,副董事长Avneesh Saxeena 宣布 Windows拥有终端操作系统大于 70% 的市场份额
Windows操作系统目前最新的稳定性操作系统是于 2015年 7 月 29 日发布的 Windows 10 , Windows Server 目前最新的稳定操作系统是2016 年 9 月 26 日发布的Windows Server 2016.
//很久以前世界上的每一台都有一个OS,以前每一台机器都是定制化的,里面的CPU指令 部件 都是不同的 // 我们想在使用的操作系统OS 就是操作我们的硬件 //计算机为什么叫做计算机,以为很久以前,计算机就是用来计算的,计算导弹的轨迹什么的. //很久以前的编程是,对计算机的硬件进行编程的.因此电脑的发展就受到瓶颈,由于硬件不同,开发就要做很多很多的事情
//大牛们就想办法把硬件上面抽象出来一层,就是一套专门的程序,用来控制硬件的程序就是我们现在的OS (操作系统)
//硬件软件分分开了 在没有分开之前,我们的硬件是和软件一一对应的
#Windows 版本历史
发布时间 版本代号 正式名称
1985年 1.01 Windows 1.01 (已经停止支持)
1986年 1.03 Windows 1.03 (已经停止支持)
1987年 2.03 Windows 2.03 (已经停止支持)
1988年 2.1 Windows 2.1 (已经停止支持)
1990年 3.0 Windows 3.0 (已经停止支持)
1992年 3.1 Windows 3.1 (已经停止支持)
1994年 NT 3.1 Windows NT 3.1 (已经停止支持)
1994年 3.2 Windows 3.2 (简体中文版) (已经停止支持)
1994年 NT 3.5 Windows 3.5 (已经停止支持)
1995年 NT 3.51 Windows NT3.51 (已经停止支持)
1995年 4.0 Windows 95 (已经停止支持)
1996年 NT 4.0 Windows NT 4.0 (已经停止支持)
1996年 CE 1.01 Windows CE 1.01 (已经挺支持支)
1997年 CE 2.0 Windows CE 2.0 (已经停止支持)
1997年 CE 2.01 Windows CE 2.01 (已经停止支持)
1998年 CE 2.10 Windows CE 2.10 (已经停止支持)
1998年 CE 2.11 Windows CE 2.11 (已经停止支持)
1998年 4.1 Windows 98 (已经停止支持)
1999年 CE 2.11 Wdinwos CE 2.11 (已经停止支持)
1999年 4.1 Winows 98 Second Edition ( 98 Me) (已经停止支持)
2000年 NT 5.0 Windows 2000 (已经停止支持)
2000年 4.9 Windows Millennum Editon (Me) (已经停止支持)
2000年 CE 3.0 Windows CE 3.0 (已经停止支持)
2001年 NT 5.1 Windows Xp (已经停止支持)
2002年 CE 4.1 Windows CE (已经支持支持)
2002年 NT 5.1 Windows XP Media Center Edition (已经停止支持)
2002年 NT 5.1 Windows XP TablePC Edition (已经停止支持)
2003年 NT 5.2 Windows Server 2003 (已经停止支持)
2003年 NT 5.2 Windows Xp 64-bit Edition (已经停止支持)
2005年 NT 5.2 Windows Xp Professional x 64 (已经停止支持)
2005年 NT 5.2 Windows Server 2003 x64 Editions (已经停止支持)
2006年 NT 5.1 Windows Fundamentals For Legacy PCs (已经停止支持)
2006年 CE 6.0 Windows Embedded CE 6.0 (已经停止支持)
2007年 NT 6.0 Windows Vista (已经停止支持)
2007年 NT 6.0 Windows Home Server (已经停止支持)
2008年 NT 6.0 Windows Server 2008 (已经停止支持)
2009年 NT 6.1 Windows 7 (至 2020年停止支持)
2009年 NT 6.1 Windows Server 2008 R2 (已经停止支持)
2010年 CE 7.0 Windows Phone 7 (已经停止支持)
2011年 CE 7.0 Windows Embedded Compact 7 (已经停止支持)
2011年 NT 6.1 Windows Server 2011 (已经停止支持)
2012年 NT 6.2 Windows 8 (已经停止支持)
2012年 NT 6.2 Windows RT (已经停止支持)
2012年 NT 6.2 Windows Server 2012 (至 2023年停止支持)
2012年 NT 6.2 Windows Phone 8 (至 2023年停止支持)
2013年 NT 6.3 Windows 8.1 (至 2023年停止支持)
2013年 NT 6.3 Windows RT 8.1 (至 2023年停止支持)
2013年 NT 6.3 Windows Server 2012 R2 (至 2023年停止支持)
2014年 NT 6.3 Windows Phone 8.1 (至 2023年 停止支持)
2015年 NT 10.0 Windows 10 (每个版本技术支持5年, 扩展支持10年)
2016年 NT 10.0 Windows 10 Moble (每个版本支持5年,扩展支持10年)
//Windows 和 Windows Server 区别在于 附加的软件不一样,家庭版本和服务器版本的软件,内核和功能是一样的。 //内核 OS最原始的需求是操作硬件 NT核心的版本号 就是它操作硬件的能力 操作硬件的内核接口 控制硬件 官方提供的 windows 软件向下兼容 30年积累的软件
#Windows 的三个时期
16位图形用户界面
早期版本的 Windows 通常被看作仅仅是运行在于 MS-DOS 系统种的一个图形用户界面,不是操作系统。主要因为它们在MS-DOS上运行并且被用作文件系统服务。不过,即使最早的16版本的Windows已经有了许多典型的操作系统的功能。包括拥有自己的可执行格式以及为应用程序提供自己的设备驱动程序 (计算器,图形,打印机,鼠标,键盘,以及声卡)。与MS-DOS不同,Windows通过协作多任务允许用户在同一时刻执行多个图形应用程序。最后,Windows还实现了一个设计精良的,基于存档器分段的软件虚拟内存方案,使其能够运行大于物理内存的应用程序。代码段和资源在内存不足的时候进行交换,并且当一个应用程序放处理器控制时,特别是等待用户输入的时候,数据段会被移如内存。
● Windows 1.0 (1985)
● Windows 2.0 (1987)
● Windows /286
● 最后版本 Windows 3 X
16位和32位混合操作系统
这个系列的16位的Windows的升级版本,仍然需要依赖16位的DOS基层程序才能运行,不算是真正意义上的32位操作系统。由于使用DOS代码,架构也与16位DOS一样,核心属于单核心。但也引入了部分32位系统的特性,聚友一定的32位的处理能力。它可被视为微软将MS-DOS操作系统和早期Windows图形用户界面集成出售,或本身也晋升为操作系统,因此用户就不用再单独购买MS-DOS以运行 Windows图形用户界面了。
这个系统包括
● Windows 95 (第一版发布与1995年,后来改进版本与1996年和1997年)
● Windwos 98 (1998年, 1999年和2000年)
● Windows Me.虽然它是WIndows 98 的家族之一,但从来没有在广告出现过,Windows 2000的低端仿制版本,以适应想享受当时新出现的 Windows 2000但苦于硬件性能不足的用户。
32位操作系统
这个系列是 Windows NT体系结构操作系统,是真正的纯32位操作系统。Windows NT架构操作系统是完整独立的操作系统,不同于依然需要DOS基层程序混合16/32位的 Windows 9x
这个操作系统是为更高性能需求的商业市场而编写的32位操作系统,这个系统都是windows NT架构,核心才用混合式核心即改良式微核心。
包括
● windows NT 3.1 (1992年)
● NT3.5
● NT4.0
● Windows 2000
● Windows Xp
● Windows Vista
● Windows 7
● WIndows 8
● Windows 8.1
● Windows 10
Windows Xp, Windows Vista, Windows 7, Windows 8, Windows 8.1, Windows 10 同时有32的版本与x64版本
Windwos Server 2003 也有 x86把本 包括
● Windows Server 2003 R2 Datacenter Edition (32-Bit x86)
● Windows Server 2003 R2 Enterpnse Edition ( 32-Bit x86)
● Windows Server 2003 R2 Standard Edition ( 32-Bit x86)
64位操作系统
64位 Windows NT 架构操作系统,分为支持 IA-64架构和 x64架构的两种不同版本
在历史上微软曾对两种不同的64位架构提供支持,其一是 Intel公司和HP联合开发聚友革新化的 Itanium家族架构,或称之为 IA-64:和AMD公司开发的演进化的x86-64架构,由于两种的架构核心设计思想不同,因此两种架构的操作系统和应用软件不具有互通性,但都对传动的IA-32的软件一定程度上提供支持,微软在发布Windows Server 2012 R2前放弃了对 Itanium架构的支持,因此现在微软的64位产品指的单单是x86-64架构,而在微软的词汇中称 x64。
支持Itanium家族架构的微软 Windows产品有:
● Windows 2000 Advanced/Datacenter Server Limited Editon
● Windows XP 64-bit Edition
● Windows XP 64-bit Edition Version 2014
● Windows Server 2003/2003 R2 Enterprise/Datacenter
● Windows Server 2008/2008 For Itanium Based System
支持 x64架构的 Windows 产品有:
● Windows Xp Professional x64 Edition
● Windows Server 2003/2003 R2全线产品(Web版除外)
● Windows Vista /7/8/8.1
● Windows Server 2008/2008R2/2012/2012R2 全线产品
● Windows 10
移动设备操作系统
微软针对移动产品而开发的精简移动操作系统 Windows Mobile, Windows Phone 和 Windows 10 Moble.
NT架构
Windows NT体系架构是指一系列微软设计及制造,在Windwos NT 锁派生出的视窗操作系统架构.
//我们现在所使用的 Windows 操作系统都是 NT架构的
//NT 架构下 操作系统一共分为了两层 NT结构
//用户态 R0 Ring0
//和心态 R3 Ring3
//所谓的 16位 32位 64位 操作系统是什么 以后会不会有128位的操作系统?
//CPU的运算能力是由 计算位数来决定的
//CPU当中能存储的只有 1 和 0
//16位操作系统使用 Cpu 当中 每次使用 16位进行计算 每次计算的结果或者数据只能16位 当操作16位的时候CPU会拿其他的运算器 额外控制器来计算
//32位操作系统使用 32位计算是最快捷的
//64位操作系统使用 64位计算是最快捷的 【64位计算浮点数上面是32位速度的N倍】
// 32位系统 CPU 的寻址 最大4GB 内存
// 64位系统 将会是 32位的N倍
//以后会不会出现128位的CPU呢?现在计算机的瓶颈不是在CPU上面 而是其他 I/0之上
//IO 是 Input Output 我们对磁盘进行读写就是IO操作
I/O(input/output),即输入/输出端口。每个设备都会有一个专用的I/O地址,用来处理自己的输入输出信息。CPU与外部设备、存储器的连接和数据交换都需要通过接口设备来 实现,前者被称为I/O接口,而后者则被称为存储器接口。存储器通常在CPU的同步控制下工作,接口电路比较简单;而I/O设备品种繁多,其相应的接口电路也各不相同,因此,习惯 上说到接口只是指I/O接口。
#Windows 与编程语言
Windows API
Windows操作系统应用程序接口 (Windows Api),有非正式的简称法为 WinApi,是微软对与Windows操作系统中可用的核心应用程序编程接口的称法,它被设计位各种语言的程序调用,也是应用软件与Windows系统最直接的交互方式,大多数驱动程序需要对Windows系统更底层访问接口,由所用版本的Windows的Native API来提供接口。
Windows有一个软件开发包 (SDK software development kit)提供相应的文档和工具,以使程序员开发使用Windows API的软件和利用Windows技术。
SDK&API&MFC
SDK(Software Development Kit)
软件开发巩固组,是用来帮 产品 或 平台 开发应用成功许的工具组,有产品的厂商提供给开发者使用的。
通常是 某一家厂商 针对某一平台 或者 系统 或者 硬件 锁发布出来用以开发应用程序的工具组
在这个工具包里面,可能包含了各种各样的开发工具,模拟器等
//微软 VS2015 也是SDK // QT也是 SDK
API (Appllcation Programming Interface)
程序接口,在一个同一个平台下的 两个不同的东西 (程式 or 系统),为了能取用对方的功能等等。
所以一个X模式 写了一组函式,让 同一平台的其他程式 X模式的功能
那组程式就可以说是一个X默认对外开放的API。
MFC(Microsoft Foundation Classes)
微软基础类,微软提供过的,用于在C++韩晶下编写应用程序的一个框架和引擎,也可以说,MFC是 Win API 与C++结合后的再一次封装,是指应用程序框
架
//Windows下面有很多应用程序框架
#Windows API 分类
基础服务 (Base Services)
提供对 Windows系统可用的基础资源访问接口
● 文件系统 (file system)
● 外部设备 (device)
● 进程 (process)
● 线程 (thread)
● 注册表 (Windows registry)
● 错误处理机制 (error haning)
这些功能接口位于, 16Windows下的kernel.exe krn1286.exe或 krn1386.exe系统文件中,以及32位Windows 下的 kernel32.dll和advapi32.dll中
图形设备接口(GDI)
提供功能为
● 输出图形内容到显示器,打印机以及其他外部输出设备
它位于16位Windows下的gdi.exe: 一集32位Windows 下的 gdi32.dll.
图形化用户界面(GUI)
提供功能为:
● 创建和管理屏幕和大多数基础空空关键 (control),比如按钮和滚动条
● 接收鼠标和键盘输入,以及其他与GUI有关的功能。
这些调用接口位于,16位Windows 下的 user.exe 以及32位Windows下的 user32.dll. 从Windows XP版本之后,基础控件和通用对话框空间(Common Control Libary)的调用接口放在 comctl32.dll中。
通用对话框链接库 (Common Dialog Box Library)
为应用程序提供标准对话框
● 打开 / 保存文件对话框,颜色对话框和字体对话框等等
这个链接库位于,16位下的 commdlg.dll中,以及32位Windows下comdlg32.dll中。它被归类为 User Interface API 之下。
通用空间链接库(Common Control Library)
为应用城西提供接口来访问操作系统提供一些高级空间。比如像
● 状态栏 (status bar)
● 进度条 (progress bars)
● 工具栏 (toolbar)
● 标签(tab)
这个链接库位于 16位Windows下 commctrl.dll中,以及32位系统Windows下 comctl32.dll中..它被归类为 User Interface API 之下。
Windows外壳(Windows Shell)
作为Windows API的组成部分, 不仅允许应用程序访问 Windows外壳提供的功能,还对之有所改进和增强。
它位于16位 Windows下 shell.dll中,以及32位系统Windows下shell32.dll中(Windows 95则在shlwapi.dll中)它被归类为 User Interfface API之下。
网络服务 (Netwrok Services)
为访问操作系统提供的多种网络功能提供接口,它包括NetBIOS, Winsock, NetDDE及RPC等。
多媒体相关API
自从Windows 95OSR2以来, Microsoft把 DirectX API作为 Windows安装一部分。DirectX提供一组松散相关的多媒体和游戏服务,包括
● Direct3D可以作为OpenGL的代替,来访问3D加速硬件
● DirectDraw提供硬件加速2D framebuffer(帧缓冲)接口访问,自DirectX 9以来,相比Direct3D更倾向于后者,因为Direct3D提供更全面的高性能图形功能(毕竟2D渲染只是3D渲染的(不严格)子集)。以被Direct2D代替。
● DirectSound提供底层次的硬件加速声卡访问。被XAudio替代
● DirectInput用来与输入设备(摇杆和Gamepad)进行通信。已被DirectX 9 中引入的 Xinput所替代
● DirectPlay提供一个多人游戏的框架 (multiplay gaming infrastructure),它已经被DirectX 9所替代, Microsoft不建议用它开发游戏。
● DirectShow可以创建和运行通用的多媒体通道(generic multmedia pipelines),它可以与GStreamer框架相媲美,并且经常被用来渲染游戏视频和创建媒体播放器(Windows Media Player 及诸如FFDShow之类的编码解码器正是基于此:但是在 Windows Vista及更高版本种,DirectShows被Media Foundation代替),不建议用DirectShow开发游戏。
● DirectMusic提供类似MIDI功能,与DirectSound一起被XAudio代替。
封装库
微软利用许多更底层的 Windows API 函数.开发出许多封装库(wrapper),让应用程序以更抽象的方式与Windows API进行交互
MFC( Microsoft Foundation Class Library )用C++类别来封装Windows API的功能,因而允许用更为面向对象的方式与API进行交互
ATL( Active Template Library)是对COM的面向模板(template oriented)的封装。
WTL( Windows Template Library )作为ATL的增强,被用来作为MFC的轻型的代替物。
其他著名的封装库是 Borland公司的产品,位了与MFC竞争而推出OWL(Object Windows Library)提供了累死的面向对象封装。
不久 Borland 又推出VCL(Visual Component Library)来取而代之。
大多数的Windows程序框架 (application framework)是对 Windows API的封装,因而NET Framework,Java一起其他的WIndows下的程序语言都是或者封装库
//总结 windows下的API超过2000多个 30年系统更新积累的
#如何使用WIndows API
一般VS2015都帮我们设置的好了要用到的静态库,没有设置的话是无法使用WIndowsAPI的
1 #include <windows.h> 2 3 int main() 4 { 5 MessageBoxA(NULL,"I Love PoEdu!","MessageBoxA",MB_OK); //ASCII 版本函数 6 MessageBoxW(NULL,L"I Love PoEdu!",L"MessageBoxW",MB_OK); //UICODE 版本函数 7 return 0; 8 }
MessageBox函数在 user32.dll中调用