Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Открытие жесткого / оптического диска как потока вывода

Ответить
Настройки темы
C/C++ - Открытие жесткого / оптического диска как потока вывода

Ветеран


Сообщения: 1392
Благодарности: 131


Конфигурация

Профиль | Отправить PM | Цитировать


Если открывать оптический диск как поток вывода (т.е. структура файловой системы значения не имеет), то на каком уровне привилегий это должно осуществляться? Необходимо ли это писать как драйвер с привилегиями SYSTEM?

Код: Выделить весь код
HANDLE hDev = CreateFile(TEXT("\\\\.\\D:"), GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

if (hDev == INVALID_HANDLE_VALUE) 
{ 
printf("Could not open file (error %d)\n", GetLastError());
return 0;
}
Этот код создает хэндл.

Однако при попытке считать данные


Код: Выделить весь код
if( FALSE == ReadFile(hDev, ReadBuffer, BUFFER_SIZE-2, &dwBytesRead, NULL) )
{
printf("Could not read from file (error %d)\n", GetLastError());
CloseHandle(hDev);
return 0;
}

if (dwBytesRead > 0)
{
ReadBuffer[dwBytesRead+1]='\0'; // NULL character

_tprintf(TEXT("Text read  (%d bytes): \n"), dwBytesRead);
printf("%s\n", ReadBuffer);
}
else
{
printf("exit\n");
}
появляется ошибка 87. ( ERROR_INVALID_PARAMETER http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx)

Если я пытаюсь открывать жесткий диск кодом
Код: Выделить весь код
HANDLE hDev = CreateFile(TEXT("\\\\.\\PhysicalDrive0"),
GENERIC_READ | GENERIC_WRITE, 
FILE_SHARE_READ|FILE_SHARE_WRITE, 
NULL, 
OPEN_EXISTING, 
FILE_ATTRIBUTE_NORMAL, 
NULL);
то ошибка номер 5 ( ERROR_ACCESS_DENIED5 (0x5) Access is denied. http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx

В чем я ошибаюсь?

Отправлено: 10:03, 07-02-2014

 

Ветеран


Contributor


Сообщения: 24051
Благодарности: 6985

Профиль | Отправить PM | Цитировать


mrcnn, посмотрите исходный код Far Manager'а. Он умеет открывать «\\.\PhysicalDriveN» как для просмотра, так и для редактирования. Может, что найдёте полезного.

Отправлено: 10:49, 07-02-2014 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Открытие жесткого / оптического диска как потока вывода

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
HDD - как определить состояние жесткого диска? Remi Martin Накопители (SSD, HDD, USB Flash) 11 07-02-2012 19:35
CMD/BAT - Как сделать два потока вывода в файл и на экран zamut Скриптовые языки администрирования Windows 2 27-12-2011 09:10
HDD - Как восстановить данные с жесткого диска? ES Накопители (SSD, HDD, USB Flash) 1 13-08-2009 13:39
Установка - Как установить Висту с жесткого диска dentist_18RUS Microsoft Windows Vista 1 30-11-2007 03:45




 
Переход