Не удается записать на физический диск в Windows 7? - PullRequest
0 голосов
/ 25 января 2019

Я пытаюсь использовать 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. Я поднял приложение до "Права администратора" .

Спасибо

...