Блокировка/Разблокировка CD-ROM

Вы уж простите, что на сях... сподручней было :\
Исходный код

// ©Drkb v.3(2007): www.drkb.ru

//заблокировать

void CMFcDlg::OnBnClickedButton1()

{

HANDLE hDevice = CreateFile ("\\\\.\\E:",

 GENERIC_READ,

 FILE_SHARE_READ | FILE_SHARE_WRITE,

 NULL,

 OPEN_EXISTING,

 NULL,

 NULL);

DWORD dwBytesReturned = 0;

PREVENT_MEDIA_REMOVAL pmr = {TRUE}
;

if(!DeviceIoControl (hDevice, IOCTL_STORAGE_MEDIA_REMOVAL, &pmr, sizeof(pmr), NULL, 0, &dwBytesReturned, NULL)) AfxMessageBox ("Door can\'t be locked");

CloseHandle (hDevice);

}

//разблокировать

void CMFcDlg::OnBnClickedButton2()

{

HANDLE hDevice = CreateFile ("\\\\.\\E:",

 GENERIC_READ,

 FILE_SHARE_READ | FILE_SHARE_WRITE,

 NULL,

 OPEN_EXISTING,

 NULL,

 NULL);

DWORD dwBytesReturned = 0;

PREVENT_MEDIA_REMOVAL pmr = {FALSE}
;

if(!DeviceIoControl (hDevice, IOCTL_STORAGE_MEDIA_REMOVAL, &pmr, sizeof(pmr), NULL, 0, &dwBytesReturned, NULL)) AfxMessageBox ("Door can\'t be unlocked");

CloseHandle (hDevice);

}

Автор ответа: Baa
Взято с Vingrad.ru http://forum.vingrad.ru

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;

Автор: Krid
Взято из http://forum.sources.ru

Отправить комментарий

Проверка
Антиспам проверка
Image CAPTCHA
...