Я пытаюсь использовать 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 был запрещен».
Почему?
Примечание:
Первый диск, содержащий операционную систему.Я пытаюсь записать на второй жесткий диск в системе.
При записи на второй диск другие процессы не пытаются получить доступ к данным на диске.
Я поднял приложение до "Права администратора" .
Спасибо