gpt4 book ai didi

windows - 如何以编程方式防止 Windows 硬盘驱动器降速?

转载 作者:可可西里 更新时间:2023-11-01 12:42:57 28 4
gpt4 key购买 nike

我的程序在硬盘空闲空间上执行任务。任务比较长,需要1-2个小时

问题是在笔记本电脑上,当用户不活动时,硬盘可能会在几分钟后关闭。

我如何以编程方式防止 Windows 硬盘转速下降(断电)?

最佳答案

要防止系统进入空闲模式,您可以尝试使用 SetThreadExecutionState功能。此函数通知系统应用程序正在使用中,并允许您指定线程的执行要求。用法可以是这样的,但我不确定这是否也会影响磁盘断电计时器:

type
EXECUTION_STATE = DWORD;

const
ES_SYSTEM_REQUIRED = $00000001;
ES_DISPLAY_REQUIRED = $00000002;
ES_USER_PRESENT = $00000004;
ES_AWAYMODE_REQUIRED = $00000040;
ES_CONTINUOUS = $80000000;

function SetThreadExecutionState(esFlags: EXECUTION_STATE): EXECUTION_STATE;
stdcall; external 'kernel32.dll' name 'SetThreadExecutionState';

procedure TForm1.Button1Click(Sender: TObject);
begin
if SetThreadExecutionState(ES_CONTINUOUS or ES_SYSTEM_REQUIRED or
ES_AWAYMODE_REQUIRED) <> 0 then
try
// execute your long running task here
finally
SetThreadExecutionState(ES_CONTINUOUS);
end;
end;

或者也有可用的新函数集PowerCreateRequest , PowerSetRequestPowerClearRequest专为 Windows 7 设计,但文档令人困惑,目前我还没有找到任何使用示例。

或者您可以通过 PowerWriteACValueIndex 修改电源设置或 PowerWriteDCValueIndex与电源设置的 GUID_DISK_SUBGROUP 子组一起运行。

关于windows - 如何以编程方式防止 Windows 硬盘驱动器降速?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8733457/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com