无法在Windows 7中写入物理磁盘?

时间:2019-01-25 08:25:44

标签: c++ windows hard-drive

我尝试使用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. 我已将该应用程序提升为“管理员权限”

谢谢

0 个答案:

没有答案