首页 > 解决方案 > 无法在 Windows 7 中写入物理磁盘?

问题描述

我尝试使用 Visual C++ 2008 编写一个小代码,它将一些数据写入物理磁盘,如下所示:

CFile File;
CFileException FileException;
DWORD dwBytesReturned;
CByteArray Buf;

if (File.Open(_T("\\\\.\\PhysicalDrive1"), CFile::modeWrite | CFile::shareDenyNone | CFile::typeBinary, &FileException))
{
    if (::DeviceIoControl(File.m_hFile, FSCTL_LOCK_VOLUME, NULL, 0, NULL, 0, &dwBytesReturned, NULL))
    {
        Buf.SetSize(512 * 1024);
        ::memset(Buf.GetData(), 0, Buf.GetSize());
        File.Write(Buf.GetData(), Buf.GetSize());
    }

    File.Close();
}

文件打开成功,调用::DeviceIoControl也成功。但是,在调用以下代码行时:

File.Write(Buf.GetData(), Buf.GetSize());

我会得到一个例外,上面写着

“访问 \\.\PhysicalDrive1 被拒绝”。

为什么?

笔记:

  1. 第一个包含操作系统的磁盘。我尝试写入系统中的第二个硬盘。

  2. 写入第二个磁盘时,没有其他进程尝试访问磁盘上的数据。

  3. 我已将应用程序提升到"Administrator Privileges"

谢谢

标签: c++windowshard-drive

解决方案


推荐阅读