Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 1 226

/ вопрос открыт /

Приветствую, уважаемые эксперты!
Не могли бы вы подсказать, как определить, заблокирован ли CD-ROM или нет?
Спасибо

Илья (Hott Dogg) Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Илья (Hott Dogg) (статус: Посетитель)
Вопрос отправлен: 24 декабря 2007, 00:49
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Feniks

Здравствуйте, Илья (Hott Dogg)!
Попробуйте решить в лоб, т.е. сами его заблокировать/разблокировать.
const
{©Drkb v.3(2007): www.drkb.ru}

IOCTL_STORAGE_MEDIA_REMOVAL = $02D4804;

type
PREVENT_MEDIA_REMOVAL=record
PreventMediaRemoval:BOOL;
end;

// fLock=true - блокировать
// fLock=false - разблокировать
function LockCD(cdLetter:char; fLock:boolean):boolean;
var
hDevice : THandle;
dwBytesReturned : DWORD;
pmr : PREVENT_MEDIA_REMOVAL;
begin
result:=false;
hDevice := CreateFile(pchar('\\.\'+cdLetter+':'),GENERIC_READ,
FILE_SHARE_READ or FILE_SHARE_WRITE,
nil,OPEN_EXISTING, 0,0);
if (hDevice=DWORD(-1)) then exit;

try
pmr.PreventMediaRemoval:=fLock;
if (not DeviceIoControl(hDevice, IOCTL_STORAGE_MEDIA_REMOVAL, @pmr,
sizeof(pmr),nil, 0,
dwBytesReturned, nil)) then exit else result:=true;
finally
CloseHandle (hDevice);
end;
end;

// блокируем
procedure TForm1.Button1Click(Sender: TObject);
begin
if not LockCD('E',true) then
MessageBox(Handle,'Can not lock CD','Error',MB_ICONERROR)
else
MessageBox(Handle,'CD is locked','Info',MB_ICONINFORMATION);
end;

// разблокируем
procedure TForm1.Button2Click(Sender: TObject);
begin
if not LockCD('E',false) then
MessageBox(Handle,'Can not unlock CD','Error',MB_ICONERROR)
else
MessageBox(Handle,'CD is unlocked','Info',MB_ICONINFORMATION)
end;

Ответ отправил: Feniks (статус: Бакалавр)
Время отправки: 24 декабря 2007, 10:51


Мини-форум вопроса

Всего сообщений: 1; последнее сообщение — 24 декабря 2007, 18:35; участников в обсуждении: 1.
Илья (Hott Dogg)

Илья (Hott Dogg) (статус: Посетитель), 24 декабря 2007, 18:35 [#1]:

Спасибо, но как разблокировать/заблокировать я знаю
Код взял из того же хэлпа, откуда и Вы:)
Мне надо просто вывести статус привода на экран

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:33
Выполнено за 0.03 сек.