我们正在建立一个嵌入式Windows系统,该系统需要具有更改系统日期和时间的功能。我们的系统无法像普通PC一样正常关闭,而是由用户直接切断电源。
当我们尝试使用Win API函数(如SetLocalTime()(具有管理员权限))时,问题就来了,当函数刚刚执行但用户重新启动计算机(即切断电源并打开电源)时,API成功再次),日期设置将恢复为先前的日期设置。看起来OS缓存中的设置需要正常重启才能将设置存储到磁盘。
有人知道如何在不重新启动操作系统的情况下立即“刷新数据缓存”吗?
非常感谢您。
答案 0 :(得分:0)
有两种解决方法可以检查是否有帮助:
在Windows更改时间之后,您将明确执行重新启动操作,以使更改可以在用户直接切断电源之前写入磁盘。您可以使用以下API重新启动系统:
ExitWindowsEx(EWX_REBOOT | EWX_FORCE,
SHTDN_REASON_MAJOR_OPERATINGSYSTEM |
SHTDN_REASON_MINOR_UPGRADE |
SHTDN_REASON_FLAG_PLANNED)
CreateFile。禁用缓存后,所有读取和写入操作都将直接访问物理磁盘。因此,您可以将时间存储在这样的文件中,并在系统重新引导时读取并重新设置(Starting an Scheduled task on System Boot)。