Советы по Delphi

         

Получение информации о диске


...я не нашел информации относительно функции 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]



Содержание раздела