修复WMI服务的方法和装置转让专利

申请号 : CN202111218284.8

文献号 : CN114064234B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 相超

申请人 : 荣耀终端有限公司

摘要 :

本申请涉及终端领域,提供了一种修复WMI服务的方法和装置。该方法应用于电子设备,该电子设备包括第一模块,该方法包括:第一模块在第一时刻向WMI服务发送第一指示信息,第一指示信息指示WMI服务向第一模块发送WMI中断;第一模块监听WMI中断;若第一模块在第一预设时段内未收到WMI中断,第一模块重启WMI服务。热键功能出现异常的原因可能是WMI服务异常,无法将SCI生成事件通知给第一模块,重启WMI服务有一定的概率解决WMI服务无法传递SCI生成事件的问题。第一模块发送第一指示信息后,若在预设时段内未收到WMI中断,说明WMI服务异常,第一模块可以重启WMI服务,从而可以解决热键功能异常问题。

权利要求 :

1.一种修复窗口管理规范WMI服务的方法,其特征在于,应用于电子设备,所述电子设备包括第一模块,所述方法包括:所述第一模块向WMI服务发送第一指示信息,所述第一指示信息指示所述WMI服务向所述第一模块发送WMI中断;

所述第一模块监听所述WMI中断;

若所述第一模块在第一预设时段内未收到所述WMI中断,所述第一模块重启所述WMI服务。

2.根据权利要求1所述的方法,其特征在于,所述电子设备还包括WMI模块,所述方法还包括:所述WMI服务响应于所述第一指示信息,向所述WMI模块发送第二指示信息,所述第二指示信息指示所述WMI模块向所述WMI服务发送所述WMI中断;

所述WMI模块根据所述第二指示信息生成所述WMI中断;

所述WMI模块向所述WMI服务发送所述WMI中断。

3.根据权利要求1或2所述的方法,其特征在于,所述电子设备还包括WMI模块,还包括:若所述第一模块在所述第一预设时段内收到所述WMI中断,所述第一模块通过所述WMI服务向所述WMI模块获取标识信息,所述标识信息为与所述第一指示信息中的标识关联的信息;

若所述第一模块在第二预设时段内未收到所述标识信息,所述第一模块重启所述WMI服务。

4.根据权利要求3所述的方法,其特征在于,还包括:若所述第一模块在所述第一预设时段内收到所述WMI中断,所述第一模块清空第一计数器,所述第一计数器用于记录所述WMI服务的连续重启次数。

5.根据权利要求1或2所述的方法,其特征在于,所述第一模块重启所述WMI服务,包括:所述第一模块在第一计数器的数值小于第一阈值时重启所述WMI服务,所述第一计数器用于记录所述WMI服务的连续重启次数。

6.根据权利要求5所述的方法,其特征在于,还包括:所述第一模块在重启所述WMI服务时将所述第一计数器的数值加1。

7.根据权利要求1或2所述的方法,其特征在于,所述第一模块向WMI服务发送第一指示信息,包括:所述第一模块周期性地向所述WMI服务发送所述第一指示信息。

8.根据权利要求1或2所述的方法,其特征在于,所述第一模块向WMI服务发送第一指示信息,包括:所述第一模块根据用户输入的热键功能修复指令向所述WMI服务发送所述第一指示信息。

9.一种修复WMI服务的装置,其特征在于,包括处理器和存储器,所述处理器和所述存储器耦合,所述存储器用于存储计算机程序,当所述计算机程序被所述处理器执行时,使得所述装置执行权利要求1至8中任一项所述的方法。

10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,当所述计算机程序被处理器执行时,使得所述处理器执行权利要求1至8中任一项所述的方法。

说明书 :

修复WMI服务的方法和装置

技术领域

[0001] 本申请涉及终端领域,具体涉及一种修复窗口管理规范( management instrumentation,WMI)服务的方法和装置。

背景技术

[0002] 热键是终端设备实现特定功能的快捷键,用户可以自定义热键的功能。例如,用户在笔记本电脑的键盘上摁F10,可以打开电脑管家应用程序(application,APP)。
[0003] 在一些场景中,自定义热键的功能可能会发生异常,例如,用户摁下F10,电脑管家APP没有响应,从而造成用户体验下降。

发明内容

[0004] 本申请实施例提供了一种修复WMI服务的方法、装置、计算机可读存储介质和计算机程序产品,能够解决热键功能异常的问题,提高用户体验。
[0005] 第一方面,提供了一种修复WMI服务的方法,应用于电子设备,所述电子设备包括第一模块,所述方法包括:第一模块向WMI服务发送第一指示信息,第一指示信息指示WMI服务向第一模块发送WMI中断;第一模块监听WMI中断;若第一模块在第一预设时段内未收到WMI中断,第一模块重启WMI服务。
[0006] 第一模块例如是屏幕展示(on‑screen display,OSD)服务。用户摁下热键后,终端设备的芯片会生成系统控制中断(system control interrupt,SCI),SCI生成事件(即,WMI中断)经由输入输出系统(basic input output system,BIOS)中的SCI事件服务和操作系统(operating system,OS)中的WMI服务(Winmgmt)传递至OSD服务,OSD服务收到SCI后,根据SCI生成事件中的标识确定热键对应的功能,并实现该功能。通常情况下,热键功能出现异常的原因是WMI服务异常,无法将SCI生成事件通知给应用层的APP,重启WMI服务有一定的概率解决WMI服务无法传递SCI生成事件的问题。在本实施例中,OSD服务发送第一指示信息后,若OSD服务在预设时段内未收到WMI中断,说明WMI服务异常,OSD服务可以重启WMI服务,从而可以解决热键功能异常问题。
[0007] 在一种可选的实施方式中,电子设备还包括WMI模块,所述方法还包括:WMI服务响应于第一指示信息,向WMI模块发送第二指示信息,第二指示信息指示WMI模块向WMI服务发送WMI中断;WMI模块根据第二指示信息生成WMI中断;WMI模块向WMI服务发送WMI中断。
[0008] 第二指示信息可以与第一指示信息相同,也可以与第一指示信息不同;即,WMI服务可以向WMI服务转发第一指示信息,也可以基于第一指示信息生成第二指示信息。WMI模块收到第二指示信息后,直接向WMI服务发送WMI中断,无需经过SCI事件服务处理,从而可以快速确定WMI服务是否异常。
[0009] 在一种可选的实施方式中,所述方法还包括:若第一模块在第一预设时段内收到WMI中断,第一模块通过WMI服务向WMI模块获取标识信息,标识信息为与第一指示信息中的标识关联的信息;若第一模块在第二预设时段内未收到标识信息,第一模块重启WMI服务。
[0010] 第一模块在第一预设时段内收到了WMI中断,说明WMI服务在第一预设时段内的功能正常。若第一模块在第二预设时段内未收到标识信息,可能是WMI服务在第二预设时段内发生了故障,第一模块可以通过重启WMI服务尝试修复WMI服务。
[0011] 在一种可选的实施方式中,所述方法还包括:若第一模块在第一预设时段内收到WMI中断,第一模块清空第一计数器,第一计数器用于记录WMI服务的连续重启次数。
[0012] 清空第一计数器可以使得后续WMI服务异常时第一模块能够多次重启WMI服务,提高修复热键功能的概率。
[0013] 在一种可选的实施方式中,第一模块重启WMI服务,包括:第一模块在第一计数器的数值小于第一阈值时重启WMI服务,第一计数器用于记录WMI服务的连续重启次数。
[0014] 若WMI服务的连续重启次数小于第一阈值,第一模块可以尝试多次重启WMI服务,提高修复WMI服务的概率。
[0015] 在一种可选的实施方式中,所述方法还包括:第一模块在重启WMI服务时将第一计数器的数值加1。
[0016] 若WMI服务的连续重启次数大于或等于第一阈值,说明热键功能的异常问题难以通过重启WMI服务解决,继续重启WMI服务只会增加信令开销和电量消耗,在这种情况下应当停止重启WMI服务并提示用户热键功能存在异常,将第一计数器的数值加1可以避免WMI服务重启次数过多,从而减小信令开销和电量消耗。
[0017] 在一种可选的实施方式中,第一模块向WMI服务发送第一指示信息,包括:第一模块周期性地向WMI服务发送第一指示信息。
[0018] 第一模块可以周期性地发送第一指示信息,无需用户参与,从而可以在用户无感的情况下解决热键功能异常问题,提高用户体验。
[0019] 在一种可选的实施方式中,第一模块向WMI服务发送第一指示信息,包括:第一模块根据用户输入的热键功能修复指令向WMI服务发送第一指示信息。
[0020] 第一模块还可以在根据用户的指令发送第一指示信息,无需周期性发送第一指示信息,从而减小了信令开销和电量消耗。该实施例适用于省电模式的终端设备。
[0021] 第二方面,提供了另一种修复WMI服务的方法,应用于电子设备,所述电子设备包括第一模块,所述方法包括:第一模块向WMI服务发送第一指示信息,第一指示信息指示WMI服务向第一模块发送WMI中断;第一模块监听WMI中断;若第一模块在第一预设时段内未收到WMI中断,第一模块重启WMI服务。
[0022] 第一模块例如是屏幕展示(on‑screen display,OSD)服务。用户摁下热键后,终端设备的芯片会生成系统控制中断(system control interrupt,SCI),SCI生成事件(即,WMI中断)经由输入输出系统(basic input output system,BIOS)中的SCI事件服务和操作系统(operating system,OS)中的WMI服务(Winmgmt)传递至OSD服务,OSD服务收到SCI后,根据SCI生成事件中的标识确定热键对应的功能,并实现该功能。通常情况下,热键功能出现异常的原因是WMI服务异常,无法将SCI生成事件通知给应用层的APP,重启WMI服务有一定的概率解决WMI服务无法传递SCI生成事件的问题。在本实施例中,OSD服务发送第一指示信息后,若OSD服务在预设时段内未收到WMI中断,说明WMI服务异常,OSD服务可以重启WMI服务,从而可以解决热键功能异常问题。
[0023] 在一种可选的实施方式中,电子设备还包括WMI模块、嵌入式控制器(embeded controller,EC)和SCI事件服务,所述方法还包括:WMI服务响应于所述第一指示信息,向WMI模块发送第二指示信息;WMI模块根据第二指示信息将中断事件写入EC的随机存取存储器(random access memory,RAM);EC根据中断事件向SCI事件服务发送SCI中断信息;SCI事件服务根据SCI中断信息生成WMI中断;SCI事件服务向WMI服务发送WMI中断。
[0024] 热键功能出现异常的原因可能是EC与SCI事件服务发生异常,重启WMI服务无法解决这一问题。在本实施例中,WMI模块根据第二指示信息将中断事件写入EC RAM,随后,EC根据中断事件向SCI事件服务发送SCI中断信息;SCI事件服务根据SCI中断信息生成WMI中断并向WMI服务发送WMI中断,从而测试了EC和SCI事件服务是否正常。若OSD服务在第一预设时段内未收到WMI中断,说明EC与SCI事件服务可能发生异常,电子设备的厂商可以通过排查EC与SCI事件服务的故障修复热键功能,从而提高了热键功能修复的概率。
[0025] 在一种可选的实施方式中,EC根据中断事件向SCI事件服务发送SCI中断信息,包括:EC根据中断事件拉低SCI管脚的电平;SCI事件服务根据SCI管脚的电平降低向EC查询中断信息;EC根据SCI事件服务的查询向SCI事件服务发送SCI中断信息。
[0026] 在一种可选的实施方式中,还包括:若第一模块在第一预设时段内收到WMI中断,第一模块通过WMI服务向WMI获取标识信息,该标识信息为与第一指示信息中的标识关联的信息;若第一模块在第二预设时段内未收到标识信息,第一模块重启OS。
[0027] 第一模块在第一预设时段内收到了WMI中断,说明WMI服务在第一预设时段内的功能正常。若第一模块在第二预设时段内未收到标识信息,可能是WMI服务在第二预设时段内发生了故障,也可能是OS在第二预设时段内发生了故障,OS发送故障的概率较大,第一模块可以通过重启OS尝试修复热键功能。
[0028] 在一种可选的实施方式中,第一模块重启OS,包括:第一模块在第二计数器的数值小于第二阈值时重启OS。
[0029] 若OS的连续重启次数小于第二阈值,第一模块可以尝试多次重启OS,提高修复热键功能的概率。
[0030] 在一种可选的实施方式中,还包括:第一模块在重启OS时将第二计数器的数值加1,第二计数器用于记录OS的连续重启次数。
[0031] 若OS的连续重启次数大于或等于第二阈值,说明热键功能的异常问题难以通过重启OS解决,继续重启OS只会增加信令开销和电量消耗,在这种情况下应当停止重启OS并提示用户热键功能存在异常,将第二计数器的数值加1可以避免OS重启次数过多,从而减小信令开销和电量消耗。
[0032] 在一种可选的实施方式中,所述方法还包括:若第一模块在第一预设时段内收到WMI中断,第一模块清空第一计数器,第一计数器用于记录WMI服务的连续重启次数。
[0033] 清空第一计数器可以使得后续WMI服务异常时第一模块能够多次重启WMI服务,提高修复热键功能的概率。
[0034] 在一种可选的实施方式中,第一模块重启WMI服务,包括:第一模块在第一计数器的数值小于第一阈值时重启WMI服务。
[0035] 若WMI服务的连续重启次数小于第一阈值,第一模块可以尝试多次重启WMI服务,提高修复热键功能的概率。
[0036] 在一种可选的实施方式中,还包括:第一模块在重启WMI服务时将第一计数器的数值加1。
[0037] 若WMI服务多次重启仍无法被修复,说明热键功能的异常问题难以通过重启WMI服务解决,继续重启WMI服务只会增加信令开销和电量消耗,在这种情况下应当停止重启WMI服务并提示用户热键功能存在异常,将第一计数器的数值加1可以避免WMI服务重启次数过多,从而减小信令开销和电量消耗。
[0038] 在一种可选的实施方式中,第一模块向WMI服务发送第一指示信息,包括:第一模块周期性地向WMI服务发送第一指示信息。
[0039] 第一模块可以周期性地发送第一指示信息,无需用户参与,从而可以在用户无感的情况下解决热键功能异常问题,提高用户体验。
[0040] 在一种可选的实施方式中,第一模块向WMI服务发送第一指示信息,包括:第一模块根据用户输入的热键功能修复指令向WMI服务发送第一指示信息。
[0041] 第一模块还可以在根据用户的指令发送第一指示信息,无需周期性发送第一指示信息,从而减小了信令开销和电量消耗。该实施例适用于省电模式的终端设备。
[0042] 第三方面,提供了一种修复WMI服务的装置,包括用于执行第一方面或第二方面中任一种方法的单元。该装置可以是终端设备,也可以是终端设备内的芯片。该装置可以包括通信单元和处理单元。
[0043] 当该装置是终端设备时,该处理单元可以是处理器,该通信单元可以是通信接口;该终端设备还可以包括存储器,该存储器用于存储计算机程序代码,当该处理器执行该存储器所存储的计算机程序代码时,使得该终端设备执行第一方面中的任一种方法,或者,使得该终端设备执行第二方面中的任一种方法。
[0044] 当该装置是终端设备内的芯片时,该处理单元可以是芯片内部的逻辑处理单元,该输入单元可以是输出接口、管脚或电路等;该芯片还可以包括存储器,该存储器可以是该芯片内的存储器(例如,寄存器、缓存等),也可以是位于该芯片外部的存储器(例如,只读存储器、随机存取存储器等);该存储器用于存储计算机程序代码,当该处理器执行该存储器所存储的计算机程序代码时,使得该芯片执行第一方面的任一种方法,或者,使得该芯片执行第二方面中的任一种方法。
[0045] 第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序代码,当所述计算机程序代码被修复WMI服务的装置运行时,使得该装置执行第一方面中的任一种方法,或者,使得该装置执行第二方面中的任一种方法。
[0046] 第五方面,提供了一种计算机程序产品,所述计算机程序产品包括:计算机程序代码,当所述计算机程序代码被修复WMI服务的装置运行时,使得该装置执行第一方面中的任一种方法,或者,使得该装置执行第二方面中的任一种方法。

附图说明

[0047] 图1是一种适用于本申请的装置的硬件系统的示意图;
[0048] 图2是一种适用于本申请的装置的软件系统的示意图;
[0049] 图3是本申请提供的一种SCI事件服务获取中断信息的流程示意图;
[0050] 图4是适用于本申请的一种场景的示意图;
[0051] 图5是本申请提供的一种修复热键功能的方法的流程示意图;
[0052] 图6是本申请提供的一种修复热键功能的方法的信令图;
[0053] 图7是本申请提供的另一种修复热键功能的方法的流程示意图;
[0054] 图8是本申请提供的另一种修复热键功能的方法的信令图。

具体实施方式

[0055] 下面将结合附图,对本申请实施例中的技术方案进行描述。
[0056] 图1示出了一种适用于本申请的装置的硬件结构。
[0057] 该装置可以是安装有 系统的手机、智慧屏、平板电脑、可穿戴电子设备、车载电子设备、增强现实(augmented reality,AR)设备、虚拟现实(virtual reality,VR)设备、笔记本电脑、超级移动个人计算机(ultra‑mobile personal computer,UMPC)、上网本、个人数字助理(personal digital assistant,PDA)、投影仪等等,本申请实施例对图1所示装置的具体类型不作任何限制。
[0058] 装置可以包括处理器、只读存储器(read‑only memory,ROM)、硬盘、EC、键盘和显示屏。
[0059] 处理器可以包括一个或多个处理单元。例如,处理器可以包括以下处理单元中的至少一个:应用处理器(application processor,AP)、调制解调处理器、图形处理器(graphics processing unit,GPU)、图像信号处理器(image signal processor,ISP)、控制器、视频编解码器、数字信号处理器(digital signal processor,DSP)、基带处理器、神经网络处理器(neural‑network processing unit,NPU)。其中,不同的处理单元可以是独立的器件,也可以是集成的器件。
[0060] 处理器中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器中的存储器为高速缓冲存储器。该存储器可以保存处理器刚用过或循环使用的指令或数据。如果处理器需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器的等待时间,因而提高了系统的效率。
[0061] 在一些实施例中,处理器可以包括一个或多个接口。例如,处理器可以包括以下接口中的至少一个:串行外设接口(serial peripheral interface,SPI)、外设组件互连扩展(peripheral component interconnect express,PCIe)总线、低引脚数(low pin count,LPC)总线、嵌入式显示接口(embedded display port,eDP)。
[0062] SPI是一种高速的、全双工的、同步的通信总线,通常由一个主模块和多个从模块组成,主模块选择一个从模块进行同步通信,从而完成数据的交换。SPI占用芯片管脚的数量较少,节约了芯片管脚。在一些实施例中,处理器通过SPI与ROM连接,从ROM获取BIOS的代码,通过运行BIOS的代码实现BIOS的功能。
[0063] PCIe总线是一种高速串行计算机扩展总线,具有较大的系统总线吞吐量、较少的引脚数量和物理尺寸。在一些实施例中,处理器通过PCIe总线与硬盘连接,从硬盘获取操作系统和应用层APP的代码,通过运行操作系统和应用层APP的代码实现操作系统和应用层APP的功能。
[0064] LPC总线通常用于低带宽设备的连接。在一些实施例中,处理器通过LPC总线与EC连接,实现与EC之间的数据交互。
[0065] eDP是一种传输速率较高、功耗较低的影像传输接口,包含主要通道(main link)、附属通道(auxiliary channel)和连接(link training)。在一些实施例中,处理器通过eDP与显示屏连接,实现与显示屏之间的数据交互。
[0066] 显示屏可以用于显示图像或视频。显示屏包括显示面板,显示面板可以采用液晶显示屏(liquid crystal display,LCD)、有机发光二极管(organic light‑emitting diode,OLED)、有源矩阵有机发光二极体(active‑matrix organic light‑emitting diode,AMOLED)、柔性发光二极管(flex light‑emitting diode,FLED)、迷你发光二极管(mini light‑emitting diode,Mini LED)、微型发光二极管(micro light‑emitting diode,Micro LED)、微型OLED(Micro OLED)或量子点发光二极管(quantum dot light emitting diodes,QLED)。在一些实施例中,图1所示的装置可以包括1个或多个显示屏。
[0067] EC与键盘之间通过键源国际(key source international,KSI)总线或者只有键盘发送(keyboard send only,KSO)总线与键盘连接,通过KSI总线或KSO总线监测用户的按键行为。此外,EC还通过SPI与ROM连接,从ROM获取EC代码,通过运行EC代码实现EC功能。
[0068] 图1中的双向箭头表示数据总线,用于传输数据,如中断信息;图1中的无箭头连线表示控制线,用于传输控制信号,如中断。
[0069] 需要说明的是,图1所示的结构并不构成对适用于本申请的装置的限定。在本申请另一些实施例中,适用于本申请的装置可以包括比图1所示的部件更多或更少的部件,或者,适用于本申请的装置可以包括图1所示的部件中某些部件的组合,或者,适用于本申请的装置可以包括图1所示的部件中某些部件的子部件。图1示的部件可以以硬件、软件、或软件和硬件的组合实现。
[0070] 此外,图1所示的各模块间的连接关系只是示意性说明,并不构成对各模块间的连接关系的限定。
[0071] 上文详细描述了适用于本申请的装置的硬件系统,下面介绍适该装置的软件系统。本申请实施例以分层架构为例,示例性地描述该装置的软件系统。
[0072] 如图2所示,采用分层架构的软件系统分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,软件系统可以分为三层,从上至下分别为应用层、OS层以及BIOS。下面以热键检测为例介绍软件系统的工作流程。
[0073] S210,用户摁下热键后,热键产生硬件信号。
[0074] S220,EC检测到硬件信号后,通过行扫描和列扫描,确定该硬件信号对应的热键的标识;随后,EC触发SCI,即,EC拉低EC的SCI管脚电平;SCI事件服务感知到EC的SCI管脚电平降低后,通过LPC总线向EC查询中断信息,EC通过LPC总线向SCI事件服务上报中断信息,如图3所示。
[0075] EC通过LPC总线向SCI事件服务上报的中断信息用于表示热键按下,并且,该中断信息包含热键的标识(identifier,ID)。示例性的,ID为0x10时表示热键F7;ID为0x11时表示热键F8。
[0076] S230,SCI事件服务将从EC获取的热键ID转换为屏幕展示(on‑screen display,OSD)服务对应的热键ID,并将OSD服务对应的热键ID存入WMI模块。
[0077] S240,SCI事件服务产生WMI中断,向OS层的WMI服务发送该WMI中断,该WMI中断用于通知WMI服务有SCI事件发生。
[0078] S230和S240的执行顺序不分先后。
[0079] S250,WMI服务收到WMI中断后,向OSD服务转发该WMI中断,其中,电子设备开机后,PC管家通过OSD服务在WMI服务中注册WMI中断监听,该WMI中断监听用于:当WMI服务收到WMI中断后向OSD服务转发该WMI中断。
[0080] S260,OSD服务收到WMI中断后,通过WMI服务向WMI模块获取OSD服务对应的热键ID,具体地,OSD服务调用WMI服务的读/写(Read/Write)接口从WMI模块(WMI method)获取OSD服务对应的热键ID。
[0081] 电脑管家APP的OSD服务收到OSD服务对应的热键ID后,启动对应的热键功能。例如,热键功能ID对应的热键功能是打开电脑管家主界面,电脑管家APP可以控制显示屏显示图4所示的界面。
[0082] 在一些情况下,WMI服务会发生异常,无法将SCI生成事件(即,WMI中断)通知给应用层的APP,从而导致用户摁下热键后,笔记本电脑无法显示图4所示的界面。
[0083] 下面介绍本申请提供的修复热键的方法。如图5所示。方法包括如下内容。
[0084] S501,电脑管家启动后,在第一时刻通过OSD服务向WMI服务发送心跳命令,该心跳命令指示WMI服务调用WMI模块向OSD服务发送WMI中断。
[0085] 该心跳命令可以包含心跳ID1,本申请对心跳命令的具体形式不做限定。
[0086] 在一种可选的实施方式中,电脑管家可以周期性地发送心跳命令,例如,每隔30秒发送一次心跳命令。当热键功能出现故障时,可以通过下文所述的步骤自动修复热键功能,从而可以在用户无感的情况下解决热键功能异常问题,提高用户体验。
[0087] 在另一种可选的实施方式中,电脑管家可以接收用户的热键功能检测指令,根据热键功能检测指令在第一时刻向WMI服务发送心跳命令。即,电脑管家可以等待用户发现热键功能故障并发送了热键功能检测指令后,发送心跳命令,无需周期性发送心跳命令,从而减小了信令开销和电量消耗。该实施例适用于省电模式的终端设备。
[0088] S502,WMI服务收到心跳命令后,通过读/写接口向BIOS的WMI模块转发该心跳命令,指示WMI模块生成WMI中断,并向WMI服务发送该WMI中断。
[0089] S503,WMI模块收到WMI服务的心跳命令后,生成WMI中断,并向WMI服务发送该WMI中断。
[0090] 该WMI中断用于测试WMI转发WMI中断的功能是否正常,因此,该WMI中断可以是任意一种WMI中断。
[0091] S504,WMI服务收到WMI中断后向OSD服务转发该WMI中断。
[0092] 若WMI服务的转发功能正常,则OSD服务可以在第一预设时段内收到WMI中断;若WMI服务的转发功能异常,则OSD服务在第一预设时段内无法收到WMI中断。因此,OSD服务可以根据第一预设时段内是否收到WMI中断确定WMI的转发功能是否正常。
[0093] S505,OSD服务确定在第一预设时段内是否收到WMI中断。
[0094] 上述第一预设时段可以从第一时刻开始时长为1s的时段,也可以是其他时段,本申请对第一预设时段的时长等特征不做限定。
[0095] 若OSD服务在第一预设时段内收到WMI中断,则OSD服务可以等待30s后再次发送心跳命令,即,在第二时刻再次发送心跳命令,若第二时刻之后的预设时段内OSD服务未收到WMI中断,OSD服务可以及时重启WMI服务,减小用户感知热键异常的概率。
[0096] 若OSD服务在预设时段内未收到WMI中断,则OSD服务可以执行S506。
[0097] S506,OSD服务确定计数器1的数值是否小于第一阈值,即,OSD服务确定WMI服务的连续重启次数是否小于第一阈值。
[0098] 若WMI服务的连续重启次数小于第一阈值(如5),OSD服务可以执行S507。
[0099] S507,OSD服务可以调用接口(CreateProcessWithToken)重启WMI服务,并且将计数器1的数值加1。
[0100] WMI服务的连续重启次数小于次数阈值时,OSD服务可以尝试多次重启WMI服务,提高修复WMI服务的概率。
[0101] 重启WMI服务后,OSD服务可以继续发送心跳命令,检测WMI服务的功能是否恢复正常。
[0102] 若WMI服务的重启次数大于或等于第一阈值,OSD服务结束热键修复流程。
[0103] WMI服务的重启次数大于或等于次数阈值时,说明WMI服务的异常问题难以通过重启解决,继续重启WMI服务可能只会增加信令开销和电量消耗,在这种情况下停止重启WMI服务并提示用户热键功能存在异常,可以减小信令开销和电量消耗。
[0104] 若OSD服务在预设时段内收到WMI中断,则OSD服务可以执行S508。
[0105] S508,OSD服务通过WMI服务向WMI模块获取心跳信息。
[0106] OSD服务可以通过WMI服务调用WMI模块上报心跳信息,WMI模块基于WMI服务的调用向WMI服务发送心跳信息,该心跳信息包含心跳ID2,心跳ID2是WMI模块基于心跳ID1生成的心跳ID。WMI服务收到心跳信息后向OSD服务转发该心跳信息。
[0107] 若WMI服务的转发功能正常,则OSD服务可以在第二预设时段内收到心跳信息;若WMI服务的转发功能异常,则OSD服务在第二预设时段内无法收到心跳信息。因此,OSD服务可以根据第二预设时段内是否收到心跳信息确定WMI的转发功能是否正常。
[0108] S509,OSD服务确定在第二预设时段内是否收到心跳信息。
[0109] 上述第二预设时段可以从第一时刻开始时长为2s的时段,也可以是其他时段,本申请对第二预设时段的时长等特征不做限定。
[0110] 若OSD服务在第二预设时段内未收到心跳信息,则OSD服务可以执行S506。
[0111] 若OSD服务在第二预设时段内收到心跳信息,则OSD服务可以执行S510。
[0112] S510,OSD服务将计数器1清零,等待30s后执行S501。
[0113] 图5所示的方法中,各个模块的信息交互流程如图6所示。
[0114] 热键功能出现异常的原因还有可能是EC与BIOS之间的通信发生异常,EC无法将SCI传递给BIOS,重启WMI服务无法解决这一问题。下面介绍本申请提供的修复热键功能的另一方法。该方法如图7所示。
[0115] S701,电脑管家启动后,在第三时刻向WMI服务发送心跳命令,该心跳命令指示WMI服务调用WMI模块向WMI服务发送WMI中断。
[0116] 该心跳命令可以包含心跳ID1,本申请对第二心跳命令的具体形式不做限定。
[0117] 在一种可选的实施方式中,电脑管家可以周期性地发送心跳命令,例如,每隔30秒发送一次心跳命令。当热键功能出现故障时,可以通过下文所述的步骤自动修复热键功能,从而可以在用户感知到热键功能出现故障前及时解决热键功能异常问题,提高用户体验。
[0118] 在另一种可选的实施方式中,电脑管家可以接收用户的热键功能检测指令,根据热键功能检测指令在第三时刻向WMI服务发送心跳命令。
[0119] 在这种实施方式中,电脑管家可以等待用户发现热键功能故障并发送了热键功能检测指令后,发送心跳命令,无需周期性地发送心跳命令,从而减小了信令开销和电量消耗。该实施例适用于省电模式的终端设备。
[0120] S702,WMI服务收到心跳命令后,通过读/写接口向BIOS的WMI模块转发该心跳命令,指示WMI模块生成WMI中断,并向WMI服务发送该WMI中断。
[0121] WMI服务收到心跳命令后,调用BIOS的高级配置与电源接口源语言(advanced configuration and power interface source language,ASL)方法(即,WMI方法)执行SCI上报流程,即,指示WMI模块生成中断事件,并将中断事件写入EC随机存取存储器(random access memory,RAM)。
[0122] S703,WMI模块基于WMI服务的调用生成中断事件,并将中断事件写入EC RAM。
[0123] 该中断事件用于测试SCI上报流程是否正常,因此,该中断事件可以是任意一种能够测试SCI上报流程是否正常的中断事件。
[0124] EC RAM是EC内部的存储器,WMI模块可以通过62/66输入/输出(input/output,I/O)端口将中断事件写入EC RAM。
[0125] S704,EC收到中断事件后触发SCI,即,EC拉低SCI管脚电平。
[0126] S705,SCI事件服务感知到EC的SCI管脚电平降低,通过LPC总线向EC查询中断信息。
[0127] S706,EC通过LPC总线向SCI事件服务上报SCI中断信息,该中断信息包含心跳信息(包含心跳ID1),该心跳信息指示该中断信息用于心跳测试。
[0128] S707,SCI事件服务收到SCI中断信息(包含心跳信息,对应ID1)后,根据SCI中断信息生成对应的WMI中断(包含心跳信息,对应ID2)。
[0129] S708,SCI事件服务将WMI中断存储到WMI模块。
[0130] S709,SCI事件服务向WMI服务上报WMI中断。
[0131] S710,WMI服务向OSD服务上报WMI中断。
[0132] WMI服务收到WMI中断后,WMI服务向OSD服务转发该WMI中断,其中,电子设备开机后,PC管家通过OSD服务在WMI服务中注册WMI中断监听,该WMI中断监听用于:当WMI服务收到WMI中断后向OSD服务转发该WMI中断。
[0133] S711,OSD服务确定是否收到WMI中断。
[0134] 若WMI服务的转发功能正常,则OSD服务可以在预设时段内收到WMI中断;若WMI服务的转发功能异常,则OSD服务在预设时段内无法收到WMI中断。因此,OSD服务可以根据预设时段内是否收到WMI中断确定WMI的转发功能是否正常。
[0135] 上述预设时段可以从第三时刻开始时长为1s的时段,也可以是其他时段,本申请对预设时段的时长等特征不做限定。
[0136] S712,若电脑管家在预设时段内未收到WMI中断,OSD服务确定计数器1的数值是否小于第一阈值,其中,计数器1用于记录WMI服务的连续重启次数。
[0137] 若计数器1的数值大于或等于第一阈值,则OSD服务结束流程,不再修复WMI服务;若计数器1的数值小于第一阈值,则OSD服务执行S713。
[0138] S713,OSD服务重启WMI服务,并将计数器1的数值加1。
[0139] WMI服务重启后,OSD服务可以执行S701。
[0140] 若电脑管家在预设时段内收到WMI中断,则OSD服务执行S714。
[0141] S714,OSD服务将计数器1清零,并通过WMI服务向WMI模块获取心跳信息,具体地,OSD服务调用WMI服务的读/写(Read/Write)接口从WMI模块(WMI method)获取心跳信息(对应ID2)。
[0142] S715,OSD服务确定在第二预设时段内是否收到心跳信息。
[0143] S716,若在第二预设时段内收到心跳信息,OSD服务确定WMI服务正常运行。OSD服务将计数器2清零,等待30秒后执行S701,其中,计数器2用于记录OS的连续重启次数。
[0144] S717,若在第二预设时段内未收到心跳信息,OSD服务确定计数器2的数值是否小于第二阈值。
[0145] OS的重启次数大于或等于第二阈值时,说明热键功能异常问题难以通过重启OS解决,继续重启OS可能只会增加信令开销和电量消耗,在这种情况下停止重启OS并提示用户热键功能存在异常,可以减小信令开销和电量消耗。
[0146] 若计数器2的数值小于第二阈值,则OSD服务执行S718。
[0147] S718,重启OS。
[0148] 图7所示的方法中,各个模块的工作流程如图8所示。图8中各个箭头附近的序号表示一种可能的步骤执行顺序,实际产品中可能存在其他执行顺序,例如,步骤5和步骤6可以先后执行,也可以同时执行。
[0149] 需要说明的是,电脑管家可以分别独立执行图5所示的方法和图7所示的方法,也可以先执行图5所示的方法再执行图7所示的方法(即,在重启WMI服务无效的情况下再重启OS,这种方式可以尽量减小修复热键功能对用户的影响,同时提高成功修复热键功能的概率),或者,先执行图7所示的方法再执行图5所示的方法,本申请对图5所示的方法和图7所示的方法的执行顺序不做限定。
[0150] 本申请还提供了一种计算机程序产品,该计算机程序产品被处理器执行时实现本申请中任一方法实施例所述的方法。
[0151] 该计算机程序产品可以存储在存储器中,经过预处理、编译、汇编和链接等处理过程最终被转换为能够被处理器执行的可执行目标文件。
[0152] 本申请还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被计算机执行时实现本申请中任一方法实施例所述的方法。该计算机程序可以是高级语言程序,也可以是可执行目标程序。
[0153] 该计算机可读存储介质可以是易失性存储器或非易失性存储器,或者,可以同时包括易失性存储器和非易失性存储器。其中,非易失性存储器可以是只读存储器(read‑only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamic RAM,DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。
[0154] 本领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的装置和设备的具体工作过程以及产生的技术效果,可以参考前述方法实施例中对应的过程和技术效果,在此不再赘述。
[0155] 在本申请所提供的几个实施例中,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的方法实施例的一些特征可以忽略,或不执行。以上所描述的装置实施例仅仅是示意性的,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,多个单元或组件可以结合或者可以集成到另一个系统。另外,各单元之间的耦合或各个组件之间的耦合可以是直接耦合,也可以是间接耦合,上述耦合包括电的、机械的或其它形式的连接。
[0156] 应理解,在本申请的各种实施例中,各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请的实施例的实施过程构成任何限定。
[0157] 另外,本文中术语“系统”和“网络”在本文中常被可互换使用。本文中的术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
[0158] 总之,以上所述仅为本申请技术方案的较佳实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。