我是指将当前整个WINDOWS的硬盘缓冲数据,立即写入到硬盘中。

解决方案 »

  1.   

    1.用CreateFile打开物理盘
    2.用FlushFileBuffers将缓存的数据写回硬盘。
      

  2.   

    谢谢,我去试试。顺便再问一下,我在刷新硬盘缓冲后要立即重起(是RESET那种,不经过关机过程),这时重起后系统会自检。怎么才能避免,让系统不要自检呢?
      

  3.   

    CString strTemp;
    HANDLE hFile = CreateFile("\\\\.\\PHYSICALDRIVE0",
    GENERIC_READ| GENERIC_WRITE,
    FILE_SHARE_READ,
    0, OPEN_EXISTING, 0, 0);
    if (hFile == INVALID_HANDLE_VALUE || hFile == NULL)
    {
    strTemp.Format("无法打开磁盘: %lu", GetLastError());
    MessageBox(strTemp);
    return;
    }
    if (!FlushFileBuffers(hFile))
    {
    strTemp.Format("刷新磁盘缓冲失败:%lu", GetLastError());
    MessageBox(strTemp);
    CloseHandle(hFile);
    return;
    }
    CloseHandle(hFile);执行结果: 刷新磁盘缓冲失败:函数不正确。
    请教是哪里出了错误?
      

  4.   

    终于在MSDN里面找到了,一楼是对的,不能打开硬盘,只能打开分区
    "\\\\.\\C:"就对了