...я не нашел информации относительно функции 69h, но я вот что я нашел по поводу использования 4409h:
type MIDPtr = ^MIDRec; MIDRec = Record InfoLevel: word; SerialNum: LongInt; VolLabel: Packed Array [0..10] of Char; FileSysType: Packed Array [0..7] of Char; end; function GetDriveSerialNum(MID: MIDPtr; drive: Word): Boolean; assembler; asm push DS { Просто для безопасности, я не думаю что это действительно нужно } mov ax,440Dh { Функция получения ID устройства } mov bx,drive { номер устройства (0-по умолчанию, 1-A ...) } mov cx,0866h { код категории и минора } lds dx,MID { Загружаем pointeraddr. } call DOS3Call { Предположим, что это быстрее, чем INT 21H } jc @@err mov al,1 { No carry, поэтому возвращаем TRUE } jmp @@ok @@err: mov al,0 { Carry установлен, поэтому возвращаем FALSE } @@ok: pop DS { Восстанавливаем DS, так как не было предположений, что мы изменим это } end; procedure TForm1.NrBtnClick(Sender: TObject); var Info: MIDRec; begin Info.InfoLevel:=0; { Уровень информации } If GetDriveSerialNum(@Info,0) then { Что-то с этим делаем... } ListBox.Items.Add(IntToStr(Info.SerialNum)+' '+Info.VolLabel); end; |
[001956]