在安装 Win8 后,很多人都体验到了其开关机惊人的速度,尤其是开机速度,相比 Win7 之下,它提升的不止是一点半点。在某些超极本和配备了 SSD 的机器上,其开关机速度可以在数秒以内。例如 Surface Pro,其实测系统引导速度为2秒,从启动到自动登录到开始屏幕只要6秒。
究竟是什么技术提升了 Win8 的开关机速度呢?如果要用最简单的一句话概括,那应该是"系统会话休眠",或者更简单的,"混合式关机"。
在 以往的 Windows OS 中,典型的关机顺序为:
1. 单击"关机"。
2. Windows 广播运行应用程序关机信息,让应用程序可以保存数据和设置。应用程序也可以要求一些额外的时间以结束其当前工作。
3. Windows 为每个登录用户关闭用户会话。
4. Windows 向服务发送关机信息,通知已开始关机,接着关闭服务。如果服务未响应,系统将强制关闭。
5. Windows 向设备广播信息,示意设备进行关闭。
6. Windows 关闭系统会话(也称为"会话 0")。
7. Windows 刷新系统驱动器待决数据,以确保完全保存。
8. Windows 通过 ACPI 界面向系统发送信号以给计算机断电。
看着以上的典型关机步骤,你是不是也有想到一些步骤对应的屏幕上的 UI 表现呢~
再来看看 Windows 8 采用的混合式关机主要步骤:
1. 单击"关机"。
2. Windows 广播运行应用程序关机信息,让应用程序可以保存数据和设置。应用程序也可以要求取得一些额外的时间以结束其当前工作。
3. Windows 为每个登录用户关闭用户会话。
4. 系统会话休眠,并掉电。
可见,Windows 8 只关闭用户会话而不像以前那样完全关闭计算机。此时, Windows 不再等待并结束系统服务和关闭会话 0,而是让其进入休眠。这种关闭用户会话+休眠系统服务和系统会话的做法,被称为"混合式关机",也就不难理解了。
或者说得通俗点,就好比你之前打扫卫生时,需要先组装专业的拖布,组装好了以后,才能开始打扫卫生。而现在,你可以拿起拖布直接开始打扫,因为你上次打扫完之后,并没有将拖布这一工具像以往那样拆卸下来收好。
开机在结构上是关机的逆过程,所以有了混合式关机,开机自然也就快了。但是,除了 RAID 卡外,一般硬盘的读取速度会比写入速度略快,加上关机的时候,系统会通知并等待应用程序退出,所以从感官上,开机过程会比关机过程显得要快一些。
本文链接
storysnail的Windows串口编程笔记
Author : He YiJun (storysnail<at>gmail.com QQ:363559089)
Develop Team : 7fane Team (http://www.7fane.com,测试网站,到2013年11月底)
Editor : Yang QiuXi
Art Designer : He YiJun
License : 7fane Team License 1.0
Last Update : 2013-03-26
这半个月因肺部感染而不得不暂时终止那令人生厌的中石油巡检工作,闭门在家安静的
修养。整月的工钱自然是泡汤了,可却得来了极其珍贵的个人闲暇时光,让我能淋漓尽致的
做软件方面的研究,虽是粗茶淡饭,针剂苦药,但可静心埋头于书房,却比天堂还甜美!
恍惚已至月末,工作单位来了音讯,让我一下子从甜美的梦中惊醒,从哪里来,回哪里
去,这种如"主体思想"一样可怕的思维是我挥之不去的梦魇,无奈、不知所措、病弱的身体
却不由自主的向那发声的地方靠去!
好了,还是不再发牢骚了,只是个人觉得这种臃肿低效的国企能够存在,本身就是对“
国富论”绝佳的嘲讽,我只能用世界是多元的来啊Q一下了!
切入正题,这段时间做GSM/GPRG和GPS的小东西,需要通过串口发送AT指令来控制,以前
调试一直在用串口助手和minicom之类的现成软件,可是一点都不爽,为什么不自己写个操作
串口的软件,就像在ARM和stm32上一样!
这文章其实只是我的一个笔记,分为两篇,一篇是《storysnail的Windows串口编程笔记》,
另一篇是《storysnail的Linux串口编程笔记》,由于网上已经有非常多的类似文章,有些长篇
大论,有些短小精悍,连我自己都思考过是否有必要再写一篇,但在Ling的鼓动下还是写了!
本篇是Windows串口编程笔记,详细介绍了串口通信会用到的api函数,并提供了两个示例程序,
这两个示例程序是在64位Windows7系统上用Code::Blocks上编写测试的。
一:写串口程序用到的函数
1:windows与Linux串口设备文件名对照
Windows COM1 COM2 COMX(我的系统上X=4)
Linux /dev/ttyS0 /dev/ttyS1 /dev/ttyUSB0
2:写串口程序用到的函数
串行通讯函数定义在winbase.h头文件中,所以需要包含该文件。下面是要介绍的函数列表
CloseHandle 关闭串口
GetCommState 取得串口当前状态
SetCommState 设置串口状态
SetupComm 设置串口用的I/O缓冲区的大小
GetCommTimeouts 检测通信超时设置
SetCommTimeouts 设置通信超时参数
BuildCommDCB 用字符串中的值来填充设备控制块
WriteFile 发送数据
ReadFile 接收数据
GetOverlappedResult 返回最后异步操作结果
ClearCommError 更新串口状态结构体,并清除所有串口硬件错误
PurgeComm 清空串口缓冲区,退出所有相关操作
CreateEvent 创建一个被监控事件
SetCommMask 设置监控串口通信事件
WaitCommEvent 等待被监控事件发生
WaitForSingleObject 等待一个被监测对象的结果
WaitForMultipleObjects 等待多个被监测对象的结果
2.1
CreateFile()
用途:打开串口
原型:
HANDLE CreateFile(LPCTSTR lpFileName,DWORD dwDesiredAccess,
DWORD dwShareMode,
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
DWORD dwCreationDistribution,
DWORD dwFlagsAndAttributes,
HANDLE hTemplateFile);
参数说明:
dwDesiredAccess: 读写模式设置
dwShareMode: 串口共享模式
lpSecurityAttributes: 串口的安全属性
dwCreationDistribution: 创建文件的性质
dwFlagsAndAttributes: 属性及相关标志
hTemplateFile: 此处为0
操作说明:串口被成功打开时,会返回其句柄,以后对串口的操作都使用该句柄。
否则返回INVALID_HANDLE_VALUE即-1。
特别说明:
ReadFile和WriteFile的行为不仅受打开串口时是否使用异步i/o的影响,还受通信超时设置的影响。
串行口读写的同步、异步方式是在打开端口的同时给dwFlagsAndAttributes参数传入适当的值而设定的。
在同步方式下,调用ReadFile和WriteFile后,当实际读写操作完成或发生超时时才返回调用程序。
而异步方式函数在启动接收或发送过程后立即返回,程序继续向下执行。程序在调用ReadFile和
WriteFile时必须提供一个OVERLAPPED数据结构指针,该结构中包含一个手动的事件同步对象,
其后的程序必须借助于该事件同步对象,完成数据的接收和发送过程。
通信端口的超时设置对读写的处理方式也会产生影响,如果调用读写函数时发生端口超时,
则读写函数立即返回并返回已传输的数据字节数。
举例:
hComm=CreateFile("COM1", //串口号
GENERIC_READ|GENERIC_WRITE, //允许读写
0, //通讯设备不允许其他应用程序共享,必须以独占方式打开
NULL, //无安全属性,表示该串口不可被子程序继承
OPEN_EXISTING, //通讯设备已存在
FILE_FLAG_OVERLAPPED, //使用异步方式打开,即异步I/O
0); //通讯设备不能用模板打开
2.2
CloseHandle()
用途:关闭串口
原型:
BOOL CloseHandle(HANDLE hObjedt)参数说明:
hObjedt:串口句柄
操作说明:成功关闭串口时返回true,否则返回false
举例:
2.3
GetCommState()
用途:取得串口当前状态
原型:BOOL GetCommState(HANDLE hFile,LPDCB lpDCB);
参数说明:
hFile:串口句柄
lpDCB:设备控制块(Device Control Block)结构地址。此结构中含有和设备相关的参数。此处是与串口相关的参数。
由于参数非常多,当需要设置串口参数时,通常是先取得串口的参数结构,修改部分参数后再将参数结构写入。
在此仅介绍少数的几个常用的参数:
DWORD BaudRate:串口波特率
#define CBR_110 110
#define CBR_300 300
#define CBR_600 600
#define CBR_1200 1200
&
消费者不是技术专家,因此,操作系统有义务为每一位消费者提供可信的计算和安全的服务,保护消费者的切身利益。在安全这个话题上,大多数消费者都有一个概念,对于 Windows 系统,我们登录账户以后,可以安装杀毒软件保障系统运行时候的安全。那么对于开机和启动阶段呢?这一块的保护一直是块空白,直到 Win8 的出现。
Win8 为保障用户计算机启动阶段的安全,它配合了新的 UEFI 固件,实施了受信任启动技术。(UEFI 这个词的热度在网络上日渐升温,它是将取代 BIOS 的更强大的系统与硬件的接口,例如有了它,我们可以利用 GPT 格式磁盘,从大于 2.2 TB 的硬盘分区启动,以及可以验证启动文件的签名等等。)
由上图可以看出,微软 Windows 8 在开机、系统引导、内核启动到用户登录这个完整的启动过程中,实施了三处安全保障:
1. 安全启动:图中标1的位置,即开机初期启动组件的签名检查,可防止预启动管理器组件被篡改。
2. 测量的启动:图中标2的位置,即联合 TPM 以记录启动组件和活动。(需主板配有 TPM 模块)
3. 开机初期启动的反恶意软件:图中标3和4的位置,即注册并加载反恶意软件驱动程序作为受信任的启动关键驱动程序,以在启动进程中先于之前的体系结构来保护系统。简言之,就是杀毒软件可以在登录前的启动阶段提前运行,它运行后,自然就可以开始扫描后续仍在启动阶段加载的各种程序。
以上三点联合起来,我们称之为"受信任启动"技术,因为将安全启动、测量的启动及开机初期启动的反恶意软件三者有机地结合,有助于使系统处于可受用户信任的状态。
所以在 Win8 中,操作系统已经对使用电脑的各个阶段进行了全方位的防护,用户的体验会比以往更加安全。这里唯一剩下的缺口在于操作系统所不能控制的 UEFI 固件的强健性,希望各大厂商能够在使用 UEFI 替代 BIOS 的时候,确保自己所使用的 UEFI 是强健的,这样,恶意软件便不能攻破 UEFI,这才能让从开机到登录的过程真正安全。
本文链接