PoEdu培训 Windows班 第二课 Windows历史和WinAPI
文章类别: 培训笔记 0 评论

PoEdu培训 Windows班 第二课 Windows历史和WinAPI

文章类别: 培训笔记 0 评论

Windows简介

操作系统

Windows版本变迁

<caption>Windows版本历史</caption>
发布时间 版本代号 正式名称
1985 年 1.01 Windows 1.01 ( 已停止支持 )
1986 年 1.03 Windows 1.03 ( 已停止支持 )
1987 年 2.03 Windows 2.03 ( 已停止支持 )
1988 年 2.1 Windows 2.1 ( 已停止支持 )
1988 年 2.0 Windows/286 2.0 ( 已停止支持 )
1988 年 2.1 Windows/386 2.1 ( 已停止支持 )
1990 年 3.0 Windows 3.0 ( 已停止支持 )
1992 年 3.1 Windows 3.1 ( 已停止支持 )
1992 年 3.11 Windows For Workgroups 3.1 ( 已停止支持 )
1994 年 NT 3.1 Windows NT 3.1 ( 已停止支持 )
1994 年 3.2 Windows 3.2(简体中文版)( 已停止支持 )
1994 年 NT 3.5 Windows NT 3.5 ( 已停止支持 )
1995 年 NT 3.51 Windows NT 3.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.12 Windows CE 2.12 ( 已停止支持 )
1999 年 4.1 Windows 98 Second Edition(98 SE)( 已停止支持 )
2000 年 NT 5.0 Windows 2000 ( 已停止支持 )
2000 年 4.9 Windows Millennium Edition (ME)( 已停止支持 )
2000 年 CE 3.0 Windows CE 3.0 ( 已停止支持 )
2001 年 NT 5.1 Windows XP ( 已停止支持 )
2002 年 CE 4.1 Windows CE 4.1(已停止支持)
2002 年 NT 5.1 Windows XP Media Center Edition ( 已停止支持 )
2002 年 NT 5.1 Windows XP TabletPC Edition ( 已停止支持 )
2003 年 NT 5.2 Windows Server 2003 ( 已停止支持 )
2003 年 NT 5.2 Windows XP 64-bit Edition ( 已停止支持 )
2004 年 CE 5.0 Windows CE 5.0 ( 已停止支持 )
2005 年 NT 5.2 Windows XP Professional x64 Edition ( 已停止支持 )
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 Home 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 Mobile (每个版本技术支持5年,扩展支持10年)
2016 年 NT 10.0 Windows Server 2016 ( 至 2026 年停止支持 )

Windows系统变迁

以下引用自维基百科

早期版本的 Windows 通常被看作仅仅是运行于 MS-DOS 系统中的一个图形用户界面, 不是操作系统. 主要因为它们在 MS-DOS 上运行并且被用作文件系统服务. 
不过, 即使最早的16位版本的Windows也已经具有了许多典型的操作系统的功能,
包括拥有自己的可执行文件格式以及为应用程序提供自己的设备驱动程序(计时器、图形、打印机、鼠标、键盘以及声卡).
与 MS-DOS 不同, Windows通过协作式多任务允许用户在同一时刻执行多个图形应用程序. 
最后, Windows还实现了一个设计精良的、基于存储器分段的软件虚拟内存方, 使其能够运行大于物理内存的应用程序.
代码段和资源在内存不足的时候进行交换, 并且当一个应用程序释放处理器控制时, 特别是等待用户输入的时候, 数据段会被移入内存. 

以下引用自维基百科

这个系列的16位的Windows的升级版本, 仍然需要依赖16位的DOS基层程序才能运行, 不算是真正意义上的32位操作系统.
由于使用DOS代码, 架构也与16位DOS一样, 核心属于单核心, 但也引入了部分32位操作系统的特性, 具有一定的32位的处理能力.
它可视为微软将 MS-DOS 操作系统和早期 Windows 图形用户界面集成出售, 或本身也晋升为操作系统, 因此用户就不用再单独购买 MS-DOS 以运行"Windows图形用户界面"了.

以下引用自维基百科

这个系列是Windows NT体系结构操作系统, 是真正的纯32位操作系统.
Windows NT架构操作系统是完整独立的操作系统, 不同于依然需要DOS基层程序的混合16/32位的Windows 9x.
这个操作系统是为更高性能需求的商业市场而编写的32位操作系统. 
这个系列都是Windows NT架构, 核心采用混合式核心即改良式微核心.

以下引用自维基百科

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.

NT结构

它是指一系列微软设计及制造, 由Windows NT所派生出的视窗操作系统架构.

以下引用自维基百科

Windows NT采用用户模式与核心模式的分层设计并且是抢占式和可重入的.
可运行在单处理器或对称多处理器(SMP)上, 并利用I/O请求包与异步I/O来处理所有的I/O请求.
在Windows 2000(含)之前采用的Windows NT皆为32位版本的, 第一版64位的Windows NT首先用于64位的Windows XP.
用户模式下的程序与子系统仅能访问其可访问的资源, 核心模式下的程序则可以访问所有资源与外部设备.
Windows NT采用的核心是属于混合核心.
其体系结构包括简单内核、硬件抽象层(HAL)、驱动程序、服务(总称为运行体), 这些均属于核心模式.
Windows NT的用户模式子系统可以通过核心模式中的I/O Manager传递I/O请求给同样在核心模式中合适的驱动程序.
Windows NT的用户模式包括了两个子系统: 环境子系统(在不同操作系统类型下运行应用程序); 集成子系统(Integral subsystem)运行一些系统相关的函数.
在Windows NT中, 在核心模式的程序可以访问电脑所有的硬件和系统资源, 且在核心模式的程序可以在用户模式下运行的服务与应用程序访问到临界区(critical areas)时终止他们, 以避免访问到不该访问的存储器空间.
运行体提供了大部分的系统服务功能.
位于硬件抽象层与运行体之间的Windows NT的核心模式部分提供了多处理器同步、线程、中断调度与分派、异常处理、例外分派的功能.
核心还负责在引导时初始化设备驱动程序.
核心模式驱动程序分为三层:高层驱动程序、中层驱动程序、低层驱动程序.
Windows驱动程序模型(WDM)是存在于中层驱动程序, 主要用于二进制档与源代码兼容于Windows 98与Windows 2000的驱动程序.
低层驱动程序也可以是旧式Windows NT的设备驱动程序,或是PnP总线.

Alt NT结构图

Windows与编程语言

Windows API

以下引用自维基百科

Windows操作系统应用程序接口(Windows API), 有非正式的简称法为WinAPI, 是微软对于Windows操作系统中可用的核心应用程序编程接口的称法.
它被设计为各种语言的程序调用, 也是应用软件与Windows系统最直接的交互方式. 
大多数驱动程序需要对Windows系统更底层次访问接口, 由所用版本的Windows的Native API来提供接口.
Windows有一个软件开发包(SDK, software development kit)提供相应的文档和工具, 以使程序员开发使用Windows API的软件和利用Windows技术.

SDK

以下引用自维基百科

它或许只是简单的为某个编程语言提供应用程序接口的一些文件, 但也可能包括能与某种嵌入式系统通讯的复杂的硬件.
一般的工具包括用于调试和其他用途的实用工具.
SDK还经常包括示例代码、支持性的技术注解或者其他的为基本参考资料澄清疑点的支持文档.
软件工程师通常从目标系统开发者那里获得软件开发包. 
为了鼓励开发者使用其系统或者语言, 许多SDK是免费提供的.
SDK经常可以直接从互联网下载, 有时也被作为营销手段.
例如, 甲产品或许会免费提供构件SDK以鼓励人们使用它, 从而会吸引更多人由于能免费为其编程而购买其构件.
SDK可能附带了使其不能在不兼容的许可证下开发软件的许可证. 
例如一个专有的SDK可能与自由软件开发抵触. 
而GPL能使SDK与专有软件开发近乎不兼容.
LGPL下的SDK则没有这个问题.

MFC

Windows API的分类

基础服务(Base Services)

这些功能接口位于:
  16位Windows下的kernel.exe、krnl286.exe或krnl386.exe系统文件中
  32位Windows下的kernel32.dll和advapi32.dll中

图形设备接口(GDI)

它位于
  16位Windows下的gdi.exe;
  32位Windows下的gdi32.dll

图形化用户界面(GUI)

这些调用接口位于
  16位Windows下的user.exe
  32位Windows下的user32.dll
  从Windows XP版本之后, 基本控件和通用对话框控件(Common Control Library)的调用接口放在comctl32.dll中.

通用对话框链接库(Common Dialog Box Library)

这个链接库位于:
  16位Windows下的commdlg.dll中
  32位Windows下comdlg32.dll中
  它被归类为User Interface API之下

通用控件链接库(Common Control Library)

这个链接库位于
  16位Windows下的commctrl.dll中
  32位Windows下comctl32.dll中
  它被归类为User Interface API之下

Windows外壳(Windows Shell)

它位于
  16位Windows下的shell.dll中
  32位Windows下的shell32.dll中(Windows 95则在shlwapi.dll中)
  它被归类为User Interface API之下

网络服务(Network Services)

Web相关API

多媒体相关API

程序通信API

封装库

Windows API入门

我们使用Visual Studio系列软件在进行Windows程序开发的时候, VS会默认的给我们进行一些附加库的添加.
Alt VS默认附加库
所以, 我们只需要添加 #include <Windows.h> 就可以在我们的项目中使用Windows的API了.
Alt VS程序

Windows.h

它包含了Windows里大量我们常用的API函数

WinDef.h

Windows基础类型定义头文件

WinNT.h

Unicode支持头文件

WinBase.h

Kernel函数头文件

WinUser.h

用户态(Ring3)接口头文件

WinGDI.h

图形设备接口头文件

未完待续...

如有错误,请提出指正!谢谢.

回复