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
|
Procedure TForm1.EjecteFloppy(Drive : String; Tester : Boolean);
var
dh: THandle;
ret: Cardinal;
dg: DISK_GEOMETRY;
med : MEDIA_TYPE;
SMed : STORAGE_MEDIA_TYPE;
begin
dh := CreateFile(PChar('\\.\'+Drive), GENERIC_READ, 0, nil, OPEN_EXISTING, 0,0);
if dh <> INVALID_HANDLE_VALUE then
begin
if tester then
begin
if not DeviceIoControl(dh,IOCTL_STORAGE_GET_MEDIA_TYPES, nil, 0, @dg,Sizeof(dg),@ret, nil) then DisplaySystemError;
tester:=(dg.MediaType in [unknown,RemovableMedia,FixedMedia]);
case dg.MediaType of
F5_1Pt2_512,F3_1Pt44_512,F3_2Pt88_512,F3_20Pt8_512,F3_720_512,F5_360_512,
F5_320_512,F5_320_1024,F5_180_512,F5_160_512,F3_120M_512,F3_640_512,
F5_640_512,F5_720_512,F3_1Pt2_512,F3_1Pt23_1024,F5_1Pt23_1024,F3_128Mb_512,
F3_230Mb_512,F8_256_128,F3_200Mb_512,F3_240M_512,F3_32M_512: ShowMessage('Floppy');
Unknown: showMessage('media type : UnKnown') ;
RemovableMedia: showMessage('media type : RemovableMedia');
FixedMedia: showMessage('media type : Fixed');
else showMessage('media type : autre')
end;
end;
// if not tester then ShowMessage('tente deconnexion') else showmessage('pas un floppy ?');
// if not DeviceIoControl(dh,IOCTL_STORAGE_EJECT_MEDIA, nil, 0, nil, 0,@ret, nil) then DisplaySystemError;
CloseHandle(dh);
end;
end; |
Partager