怎样在DELPHI中取得物理硬盘的序列号?

来源:百度知道 编辑:UC知道 时间:2024/05/18 12:26:41
可以通过调用DLL文件来取得,但是想利用DELPHI自身代码或相关的DELPHI控件来取得,希望高手能介绍或推荐。
以下两行无法在DELPHI7中编译通过
lds dx,MID { Load pointeraddr. }
call DOS3Call { Supposed to be faster than INT 21H }
显示信息如下:
Build
[Error] Unit1.pas(42): Operand size mismatch
[Error] Unit1.pas(43): Undeclared identifier: 'DOS3Call'
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'
不知如何解决,请帮忙。

我翻翻~三年前的~抄的
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 { Just for safety, I dont think its really needed }
mov ax,440Dh { Function Get Media ID }
mov bx,drive { drive no (0-Default, 1-A ...) }
mov cx,0866h { category and minor code }
lds dx,MID { Load pointeraddr. }
call DOS3Call { Supposed to be faster than INT 21H }
jc @@err
mov al,1 { No carry so return TRUE }
jmp