Здравствуйте, Orifiel, Вы писали:
O>Существуют ли API-функции, позволяющие программно отключить
O>дисковод для флоппи дисков. Сохраняется ли при этом возможность через
O>определенное время снова включить дисковод, не прибегая к перезагрузке
O>винды? Если для различных виндов подходы не одинаковы, просьба
O>рассмотреть ситуацию для каждой винды в отдельности.
O>Заранее благодарен.
Для NT систем все довольно просто:
HANDLE hDevice;
DWORD dw;
BOOL res;
hDevice = CreateFile("\\\\.\\A:", GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, NULL );
// отрубаем дисковод
res = DeviceIoControl( hDevice, FSCTL_LOCK_VOLUME, NULL, 0, NULL, 0, &dw, NULL );
// ждем 20 секунд
Sleep(20000);
// опять врубаем
CloseHandle( hDevice );
Для Win9х я этого не делал, но в статье
HOWTO: Eject Removable Media on Windows 95 из MSDN вроде должен быть код для этого.
P.S. Эту статью я в онлайновом MSDN не нашел, но на дисковом варианте она есть.