Это должно помочь:
function IsCDROM(DriveNum: Integer): Boolean; assembler; asm MOV AX,1500h { смотрим на предмет MSCDEX } XOR BX,BX INT 2fh OR BX,BX JZ @Finish MOV AX,150Bh { проверяем использование CD драйвера } MOV CX,DriveNum INT 2fh OR AX,AX @Finish: end; |
BTW: под Win32 GetDriveType правильно возвращает устройство CD-ROM.
Function IsCdRom(DriveNum : Word) : Boolean; Var F : WordBool; Begin asm mov ax, 1500h { тест на наличие MSCDEX } xor bx, bx int 2fh mov ax, bx { если bx = нулю, MSCDEX не присутствует } or ax, ax { возвращаем FALSE } jz @no_mscdex mov ax, 150bh { проверка наличия драйвера MSCDEX } mov cx, DriveNum { cx содержит драйв } int 2fh @no_mscdex: mov f,ax end; Result := F; { Назначаем возвращаемое функцией значение } End; |
[001954]