Evo je funkcija koja ti odradjuje posao, samo joj prosledis slovo od drajva:
Code:
Const
FILE_DEVICE_MASS_STORAGE = $2D;
METHOD_BUFFERED = 0;
FILE_ANY_ACCESS = 0;
FILE_READ_ACCESS = 1;
FILE_WRITE_ACCESS = 2;
IOCTL_STORAGE_EJECT_MEDIA = (FILE_DEVICE_MASS_STORAGE shl 16) OR
(FILE_READ_ACCESS shl 14) OR
($202 shl 2) OR
(METHOD_BUFFERED);
IOCTL_STORAGE_LOAD_MEDIA = (FILE_DEVICE_MASS_STORAGE shl 16) OR
(FILE_READ_ACCESS shl 14) OR
($203 shl 2) OR
(METHOD_BUFFERED);
...
Function EjectCD (Drive : Char) : Boolean;
Var
CD : THandle;
Ret: DWORD;
begin
CD := CreateFile (PChar('\\.\' + Drive + ':'), GENERIC_READ, 0, nil, OPEN_EXISTING, 0, 0);
If CD <> INVALID_HANDLE_VALUE Then
Begin
Result := DeviceIoControl(CD, IOCTL_STORAGE_EJECT_MEDIA, nil, 0, nil, 0, Ret, nil);
CloseHandle(cd);
End
Else
Result := False;
End;
Ako treba da zatvoris vrata IOCTL_STORAGE_EJECT_MEDIA zameni sa IOCTL_STORAGE_LOAD_MEDIA