这在windows下称为Standby List.您可以全局清除它,也可以清除一个卷或一个文件句柄.
在全球范围内
您可以使用Microsoft Technet中的readily available program,通过选择Empty→Empty Standby List来执行此操作
在编程方面,您可以使用未记录的NtSetSystemInformation函数实现相同的功能,有关详细信息,请参阅程序中的line 239,该程序执行与前面提到的相同的操作,以及其他内容.
对于一个文件句柄
使用FILE_FLAG_NO_BUFFERING打开文件:文档正在说明你打开文件时没有缓冲,但是从Windows 98到Windows 8的所有Windows版本上的真实可观察行为是它只是抛弃了完整的缓存内容该文件(适用于所有人!)并且不会从使用此句柄的读取重新填充缓存.
一个完整的卷
卷句柄只是一个文件句柄(有点特殊,但仍然如此),因此假设您有适当的权限来打开卷句柄,您可以对完整的卷执行相同的操作.
另外,正如Mehrdad的回答here中指出的那样,似乎有一个功能/错误(功能错误?),它允许您在没有适当的权限的情况下使卷的缓存无效,仅仅通过在没有共享写入的情况下注册打开它,至少在一个最新版本的Windows.当任何对写入有效的打开成功,因为你可以改变文件系统内部数据这样做时(这是一个特性),这是完全合理的,但显然它在打开卷失败时也有效(这是一个bug) .