C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
DeviceIoControl, Блокировка устройства
Orifiel
Отправлено: 10.09.2003, 09:51


Не зарегистрирован







Сначала приведу код:

//открываем
HANDLE hDevice=CreateFile("\\\\.\\A:",GENERIC_READ|GENERIC_WRITE,
FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,NULL);
//если текущим папкой является диск А, то делаем текущим диск С
//для предотвращения нарушения доступа
if(GetCurrentDir()=="A:\\") SetCurrentDir("C:\\");
//блокируем устройство
DeviceIoControl(hDevice, FSCTL_LOCK_VOLUME, NULL, 0, NULL, 0,
&dwBytesReturned, NULL);
//ждем нужное время
Sleep(5000);
//разблокировка
CloseHandle(hDevice);

Как вы наверное догадались, блокируется флоп. Код работает прекрасно, если диск А не используется другой программой. Если же
используется, то GetLastError выводит ACCESS_DENIED. Подскажите, как
заблокировать флоп, даже если он в данный момент используется другой программой. Что передать в DeviceIoControl?

Вернуться в Вопросы программирования в C++Builder