Блокировка/Разблокировка CD-ROM
Материал из DRKB
Блокировка/Разблокировка CD-ROM[править | править код]
Вы уж простите, что на сях... сподручней было :\ Исходный код
//заблокировать
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);
}
Source: Взято с Vingrad.ru http://forum.vingrad.ru
ID: 01388
const
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;
Author: Krid
Source: Взято из http://forum.sources.ru
ID: 01389