Windows系统的电源管理

对于电源管理这部分功能,在做桌面软件的时候需要经常使用。尤其是在刻录光盘的时候,如果用户设置了节电方式,那么很可能导致光盘刻录失败。因此,有必要对这部分内容进行必要的了解。电源管理不单纯是操作系统的一个功能,必须有支持电源管理的主板,才能是操作系统发挥性能。

初识ACPI

说道操作系统的电源管理方式不能不介绍一下ACPI。它是操作系统实现电源管理的一个前提。

ACPI(Advanced Configuration Management)1997年由INTELMICROSOFTTOSHIBA提出的新型电源管理规范,意图是让系统而不是BIOS来全面控制电源管理,使系统更加省电。

其特点主要有:

l  提供立刻开机功能,即开机后可立即恢复到上次关机时的状态。

l  外设(比如:光驱)在未使用时会自动关掉电源,使用时再提供电源。

l  支持热插拔。

 

基于上述特点又把节电分为三种方式:

l  切断显示器电源,保持主机持续通电。进入挂起状态(Suspend State)后,可以通过键盘或鼠标唤醒计算机。

l  操作系统把当前信息储存在内存中,只有内存等几个关键部件通电,这时计算机处在高度节电状态。进入挂起状态(Suspend State)后,可以通过键盘或鼠标唤醒计算机。唤醒后操作系统从内存中读取数据恢复到挂起前的状态。该方式又被称为挂起到内存(Save to ram or Suspend to ram)。

l  操作系统将当前数据存储在硬盘上,然后自动关机。进入挂起状态(Suspend State)后,不能通过键盘或鼠标唤醒计算机,必须通过Power Key唤醒。唤醒后操作系统从硬盘中读取数据,恢复到挂起前的状态。该方式又被称为挂起到硬盘(Save to diskSuspend to disk)。

 

前面对ACPI的基本内容进行了简单的描述,联系到实际可以使用ACPI可以实现以下功能:

l  用户可以设定外设的开关时间。

l  笔记本电脑可以在低电压的情况下进入低功耗状态,以保证重要的应用程序运行。

l  操作系统可以在应用程序对时间要求不高的情况下降低时钟频率。

l  操作系统可以根据外设和主板的具体需求为它分配能源。

l  在无人使用计算机时可以使计算机进入休眠状态,但保证一些设备处于工作状态。

l  即插即用设备在插入时能够由ACPI来控制。

 

对于在实际应用ACPI划分了六种状态。这六种状态对电源管理做出了准确划分。它们分别是:

S0-----正常工作状态,所有设备全部供电。

S1-----通过CPU时钟控制器将CPU关闭之。其他的部件仍然正常工作。该状态也称为POSPower on Suspend

S2----- CPU处于停止运作状态,总线时钟也被关闭。其余的设备仍然运转。

S3-----操作系统把当前信息储存到内存中,只有内存等几个关键部件通电。

S4-----操作系统把当前信息储存到硬盘中,这时系统主电源关闭。但硬盘仍然带电并可以被唤醒。

S5-----关机,所有设备全部断电。

 

操作系统的消息

挂起操作

在“初识ACPI”中对电源管理有了一个基本的了解。在软件开发中对ACPI了解到这个程度已经可以了。这里,介绍一下在Windows操作系统中操作系统是怎样进行电源管理的,并通过什么消息通知应用程序。

仔细观察Windows系统,会发现在关机时会有待机、休眠两个选项。在英文操作系统中分别是SleepHibernate。如果查阅一些资料的话,可能还会看到Stand-by。那么SleepStand-byHibernate如果区分呢?查阅了一下MSDN,没有找到更好的解释。无意间在MSDN中看到一篇早期的文章,对这三个名字做了一个说明,内容如下:

    For this discussion, the term "sleep" means that the system is on standby or is in hibernation. To an application, standby and hibernation are the same. The difference occurs in how the operating system determines what gets powered down. The application does not need to provide any additional feedback for the operating system to make this determination.

我理解Sleep应该是Stand-byHibernate的统称,但是为什么在操作系统上显示的是Sleep,这个就说

不清楚了。好了,暂时先不去理会它们。为了继续这里把Stand-by称为待机,Hibernate称为休眠。在Windows

系统中待机对应的是S3状态,休眠对应的是S4状态。

 

    到这里已经清楚了很多东西。接下来来了解一下Windows系统如果电源管理事件通知给应用程序的。

MSDN中找了WM_POWERBROADCAST这样一个消息。该消息的描述:

Notifies applications that a power-management event has occurred. A window receives this message through its WindowProc function.

LRESULT CALLBACK WindowProc(HWND   hwnd,    // handle to window

                             UINT   uMsg,    // WM_POWERBROADCAST

                             WPARAM wParam,  // power-management event

                             LPARAM lParam); // function-specific data

通过MSDN的描述可以清楚的了解到应用程序通过重载WindowsProc这个函数就可以获得电源管理的消息。在接收到WM_POWERBROADCAST的同时,还会带给一个Event和一组Data。通过对Event和数据的分析可以得出目前操作系统处于哪种状态。这里需要注意一下,这个消息一定要通过WindowsProc 函数来取得,重载PreTranslateMessage函数对于这个消息是无效的。

 

Windows XP系统为基础进行描述。当Vista系统与Windows XP存在差异时,会提取差异进行描述。

   

当操作系统准备进入S3S4状态时,首先会广播WM_POWERBROADCAST消息,同时会携带PBT_APMQUERYSUSPEND事件给当前正在运行的应用程序。如果应用程序不对这个事件做任何处理,表示同意挂起请求。然后操作系统会发送PBT_APMSUSPEND时间,随后操作系统马上挂起。

 

如果某个应用程序不希望操作系统进行挂起操作,那么当接收到PBT_APMQUERYSUSPEND消息时可以阻止操作系统挂起,方法是return  BROADCAST_QUERY_DENY;。这个操作即可以阻止系统自行发起的挂起(用户在电源管理部分进行的设定),也可以阻止用户手动发起的挂起操作。

如果应用程序想在系统进入挂起状态前进行一些处理也需要在接收到这个事件时进行处理。虽然,操作系统稍后还会发送PBT_APMSUSPEND事件过来,但是停留的时间很短。

 

如果应用程序在接收到PBT_APMQUERYSUSPEND事件时没有阻止系统挂起,却在PBT_APMSUSPEND事件时返回FALSE。这时,操作系统会进入挂起状态,但马上又恢复。所以,若想阻止操作系统进入挂起状态,只能在接收到PBT_APMQUERYSUSPEND事件时,进行处理。

 

假如,应用程序阻止操作系统挂起,返回了BROADCAST_QUERY_DENY,随后操作系统还会发送PBT_APMQUERYSUSPENDFAILED事件给应用程序,通知挂起失败。

 

 

 

当操作系统从挂起状态恢复时,仍然会使用WM_POWERBROADCAST消息进行广播,同时也会携带一个事件。事件的先后顺序是PBT_APMRESUMEAUTOMATICPBT_APMRESUMESUSPEND。由于这两个事件对应用程序的影响不大,这里就不做过多的说明了。

 

Vista操作系统和Windows XP存在很大的却别。在进入挂起状态前,操作系统不会广播PBT_APMQUERYSUSPEND事件,应用程序也不能阻止用户手动发起的挂起请求。操作系统从广播PBT_APMSUSPEND事件到挂起,只给应用程序预留了2秒中的处理时间。 当从S3状态恢复时,只有采用键盘或鼠标唤醒系统应用程序才会收到APMRESUMEAUTOMATIC事件。这需要引起开发人员的注意。

 

Vista操作系统中虽然不能阻止由用户手动发起的挂起操作,但是可以阻止由操作系统发起的挂起操作(用户在电源管理方式中进行的设定)。Windows提供了SetThreadExecutionState函数可以完成这个操作。这个函数同样适用于Windows XP操作系统。

 

某段程序需要阻止操作系统进入挂起时,可以使用下面代码来完成。

::SetThreadExecutionState(ES_SYSTEM_REQUIRED | ES_DISPLAY_REQUIRED | ES_CONTINUOUS);

当处理完成后,还要恢复操作系统的电源管理功能,使用下面代码完成。

::SetThreadExecutionState(ES_CONTINUOUS);

 

关机操作

Windows系统准备关机时,会广播WM_QUERYENDSESSION消息。在这里应用程序可以做关机钱的最后处理。如果响应函数返回FALSE可以阻止操作系统关机。在MSDN中,有两个不同的描述。一个说如果在这个消息中返回非零值会接着发送WM_ENDSESSION消息,一个说返回零会发送WM_ENDSESSION消息。经过试验不论返回零还是非零在Windows XP操作系统下都会发送WM_ENDSESSION消息,

    Vista系统中如果在WM_QUERYENDSESSION消息的响应函数中返回FALSE,操作系统会弹出一个Block,然后由用户选择Yes Or No。当用户选择Yes,那么系统进行关机操作。

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: IPMI(Intelligent Platform Management Interface,智能平台管理接口)是一种在服务器硬件中集成的管理接口,用于远程监控和管理服务器的硬件资源。而IPMI Windows可视化管理工具是一种用于在Windows操作系统上进行IPMI管理的工具。 IPMI Windows可视化管理工具通常具有以下功能: 1. 远程监控:可实时监控服务器的硬件状态,包括温度、电压、风扇转速等,以便及时发现任何硬件问题。 2. 远程控制:可通过工具界面远程控制服务器,包括开关机、重启、设置BIOS等操作,方便管理员在远程环境中进行服务器管理。 3. 日志管理:工具可以实时记录服务器的系统事件和报警信息,方便管理员进行故障排查和管理分析。 4. 资源管理:可对服务器的硬件资源进行管理,包括CPU、内存、硬盘等,可以查询当前资源使用情况、配置更改等。 5. 安全性管理:工具提供了安全性管理功能,包括远程访问控制、日志审计、用户权限管理等,确保服务器管理的安全性。 通过IPMI Windows可视化管理工具,管理员可以方便地监控和管理服务器的硬件资源,实时了解服务器运行状况,并进行必要的操作和维护。这不仅提高了管理效率和响应速度,同时也减少了物理接触服务器的需求,提升了安全性和便利性。因此,IPMI Windows可视化管理工具在服务器管理中起到了重要的作用。 ### 回答2: IPMI(Intelligent Platform Management Interface)是一种管理服务器的标准接口,它允许管理员和运维人员通过远程访问服务器硬件进行监控和管理。IPMI可以通过访问服务器的基板管理控制器(BMC)来实现对服务器的远程控制和监控。 在Windows操作系统中,有一些可视化管理工具可以用来管理IPMI。这些工具通常提供图形用户界面(GUI),使用户可以直观地使用和配置IPMI功能。 一个常用的IPMI可视化管理工具是Dell OpenManage Server Administrator(OMSA)。这个工具提供了一个用户友好的界面,可以用来监控服务器的硬件状态、触发警报、进行远程控制等。用户可以通过OMSA查看服务器的健康状态、CPU和内存使用情况、硬盘和电源状态等。此外,OMSA还提供了远程KVM(键盘、视频、鼠标)功能,使管理员可以像直接在服务器前一样进行操作。 另一个常见的IPMI可视化管理工具是Supermicro IPMIView。这个工具适用于Supermicro服务器,并提供了多种功能,包括服务器健康状态监控、传感器信息查看、远程电源控制和重启、事件日志查看等。IPMIView还支持多台服务器的管理,方便用户同时监控和管理多个服务器。 IPMI可视化管理工具通常具有易用性和直观性,使管理员可以更方便地进行服务器管理。无论是Dell的OMSA还是Supermicro的IPMIView,它们都提供了丰富的功能,以满足管理员的不同需求。通过使用这些工具,管理员可以快速了解服务器的工作状态,及时发现和解决潜在问题,从而提高服务器的稳定性和可靠性。 ### 回答3: IPMI (Intelligent Platform Management Interface) 是一种硬件管理接口,它可以通过网络远程监控和管理服务器硬件的状态和功能。针对Windows操作系统,有可视化的管理工具可以与IPMI进行集成,提供更便捷的管理和监控。 IPMI Windows可视化管理工具可以以图形界面的方式展示服务器的硬件状态信息,如CPU、内存、硬盘、电源等。通过这些工具,管理员可以实时监控服务器各个硬件组件的工作状态,检测故障和异常,并采取相应的措施来解决问题。 此外,这些可视化管理工具还提供了远程管理服务器的能力,管理员可以通过IPMI接口对服务器进行远程操作,如重启服务器、远程开关机、远程维护等。这样,即使管理员不在服务器所在的现场,也可以通过网络对服务器进行管理和维护,提高了管理效率。 IPMI Windows可视化管理工具还可以提供报警和告警功能,当服务器出现硬件故障或异常时,工具可以发送警报信息给管理员,提醒其及时采取措施处理问题。这样可以及时发现和解决问题,减少服务器故障对业务的影响。 总之,IPMI Windows可视化管理工具是一种基于图形界面的方便易用的管理工具,通过与IPMI接口的集成,可以实现对服务器硬件的监控、管理和维护。这些工具提供了实时状态显示、远程操作、报警和告警等功能,简化了服务器管理的操作流程,提高了管理效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值