1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
| Procedure Ejecter(Lettre:char);
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);
var
cd: THandle;
ret: DWORD;
begin
cd := CreateFile(PChar('\\.\'+Lettre+':'), GENERIC_READ,0, nil,OPEN_EXISTING,0,0);
if CD <> INVALID_HANDLE_VALUE then
begin
DeviceIoControl(cd,IOCTL_STORAGE_EJECT_MEDIA, nil, 0, nil, 0,ret, nil);
CloseHandle(cd);
end;
end;
Procedure ChargerMedia(Lettre:char);
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);
var
cd: THandle;
ret: DWORD;
begin
cd:=CreateFile(PChar('\\.\'+Lettre+':'),GENERIC_READ,0,nil,OPEN_EXISTING,0,0);
if CD <> INVALID_HANDLE_VALUE then
begin
DeviceIoControl(cd,IOCTL_STORAGE_LOAD_MEDIA, nil, 0, nil, 0, ret,nil);
CloseHandle(cd);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Ejecter('D');
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
ChargerMedia('D');
end; |
Partager