Contributor: ANDREW EIGUS 
{
 SA> Does anyone have any idea of how I can check the system hardware and
 SA> identify available hard drives and disk drives?
}
const
 { GetDriveType return values. REQUIRES DOS 3.x or greater}
 dtError = 0; { Drive physically isn't available }
 dtRemote = 1; { Remote (network) disk drive }
 dtFixed = 2; { Fixed (hard) disk drive }
 dtRemovable = 3; { Removable (floppy) disk drive }
 dtBadVer = $FF; { Invalid DOS version (DOS 3.x required) }
Function GetDriveType(Drive : byte) : byte; assembler;
Asm
 MOV AH,30h
 INT 21h
 CMP AL,3
 JGE @@1
 MOV AL,dtBadVer
 JMP @@4
@@1:
 MOV BL,Drive
 MOV AX,4409h
 INT 21h
 JNC @@2
 MOV AL,dtError
 JMP @@5
@@2:
 CMP AL,True
 JNE @@3
 MOV AL,dtRemote
 JMP @@5
@@3:
 MOV AX,4408h
 INT 21h
 CMP AL,True
 JNE @@4
 MOV AL,dtFixed
 JMP @@5
@@4:
 MOV AL,dtRemovable
@@5:
End; { GetDriveType }
var
 Drive : byte;
 DT : byte;
Begin
 for Drive := 1 to 25 do
 begin
 DT := GetDriveType(Drive);
 if DT  dtError then
 begin
 Write('Drive ', Chr(Drive + 64), ': ');
 case DT of
 dtRemote: WriteLn('Network drive');
 dtFixed: WriteLn('Hard disk');
 dtRemovable: WriteLn('Floppy drive')
 end
 end
 end
End.
 

AltStyle によって変換されたページ (->オリジナル) /