gpt4 book ai didi

winapi - 在Windows上以编程方式旋转硬盘?

转载 作者:行者123 更新时间:2023-12-03 07:27:17 25 4
gpt4 key购买 nike

您如何要求Windows以编程方式降低硬盘速度?有没有我可以调用的用户模式函数(或者要调用的内核模式函数或要发送的IRP)来实现此目的?

我尝试过编写一个将ATA STANDBY command直接发送到硬盘的程序,但是问题是该方法不会通知系统,因此,每当系统需要刷新缓存时,它都会唤醒硬盘再次。我如何告诉系统为我执行此操作? (如果系统这样做,它将保存高速缓存并在数据过大时“爆发”数据,而不是以较小的增量写入。)

(这里的全部要点是直接执行此操作,即通过将系统范围的降速超时更改为1秒并等待磁盘降速来直接执行而不是。我需要一个可以在特定时刻调用的函数在我使用笔记本电脑的时候,不是一种不适合95%情况的通用产品。)

我到目前为止已经走了多远:

我觉得PoCallDriverIRP_MJ_POWER可能对此有用,但是我对内核模式编程的经验非常有限(并且几乎有零驱动程序的经验),所以我真的不知道。

请阅读:

更新:

人们似乎反复提到我已经提到的解决方案不起作用。就像我在上面说的那样,我已经尝试过“hacky”解决方案,这些解决方案可以更改超时值或直接向驱动器发出命令,而我在这里问这个问题的全部原因是不是做了那些事情我需要。在重复我在回答中已经说过的内容之前,请先阅读整个问题(尤其是第2和第3款),这就是问题的全部难处。

更多信息:

我发现this document about Disk Idle Detection很有用,但我的答案不在那儿。它指出电源管理器将IRP发送到磁盘驱动器(因此,为什么我怀疑IRP_MJ_POWER有用),但是我不知道如何使用该信息。

最佳答案

我希望这有帮助:

这:http://msdn.microsoft.com/en-us/library/aa394173%28VS.85%29.aspx

导致此:
http://msdn.microsoft.com/en-us/library/aa394132%28VS.85%29.aspx#properties

然后,您可以浏览到以下内容:
http://msdn.microsoft.com/en-us/library/aa393485(v=VS.85).aspx

该文档似乎概述了我在寻找的内容。

附言只是想帮助,不要开枪。

关于winapi - 在Windows上以编程方式旋转硬盘?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5367065/

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