首页  编辑  

硬盘ID号序列号

Tags: /超级猛料/Hardware.硬件相关/驱动器相关/硬盘/硬盘序列号/   Date Created:

]、。·ˉˇ¨〃々—~‖…’”〕〉》」』〗】∶!"'),.:;?]` Hard disk serial number

Question

Is there anyone who knows how to obtain the hard disk serial number?

Answer

I have an unit to get the Hd Name and the Hd Serial number for Borland

Pascal 7.0. I don't know if it's working with Delphi and the other thing is

that it is in dutch and I don't have time to translate it in englisch. Mayby

you can use it, otherwise drop it out of the window.

Unit HardDisk;

INTERFACE

FUNCTION  GetHardDiskNaam  : STRING;

FUNCTION  GetHardDiskSerieNummer        : STRING;

FUNCTION  GetHardDiskControlleNummer    : STRING;

PROCEDURE GetHardDiskGegevens;

CONST

 CodeerTabel : ARRAY[0..24] OF BYTE =

(3,1,2,1,4,1,3,2,6,4,6,5,1,2,6,4,2,6,3,4,6,2,4,1,2);

TYPE

 CharArray = ARRAY[0..24] OF CHAR;

VAR

 HardDiskGegevens          : ARRAY[1..256] OF INTEGER;

 HardDiskNaam  : CharArray;

 SerieNummer  : CharArray;

 ControlleNummer          : CharArray;

 C_HardDiskNaam: STRING;

 C_HardDiskSerieNummer    : STRING;

 C_HardDiskControlleNummer : STRING;

 C_LicentieNaam: STRING;

IMPLEMENTATION

FUNCTION GetHardDiskNaam : STRING;

VAR

 Teller : INTEGER;

 Lus    : INTEGER;

BEGIN

   GetHardDiskNaam := '';

   Teller := 1;

   FOR Lus := 1 TO 18 DO

   BEGIN

     HardDiskNaam[Teller] := CHR( ( HardDiskGegevens[27+Lus] DIV 256 ));

     Inc(Teller);

     HardDiskNaam[Teller] := CHR( ( HardDiskGegevens[27+Lus] MOD 256 ));

     Inc(Teller);

   END;

   GetHardDiskNaam := HardDiskNaam;

END;

FUNCTION GetHardDiskSerieNummer : STRING;

VAR

 Teller : INTEGER;

 Lus    : INTEGER;

BEGIN

   GetHardDiskSerieNummer := '';

   Teller := 1;

   FOR Lus := 1 TO 8 DO

   BEGIN

     SerieNummer[Teller] := CHR( ( HardDiskGegevens[10+Lus] DIV 256 ));

     Inc(Teller);

     SerieNummer[Teller] := CHR( ( HardDiskGegevens[10+Lus] MOD 256 ));

     Inc(Teller);

   END;

   GetHardDiskSerieNummer := SerieNummer;

END;

FUNCTION GetHardDiskControlleNummer : STRING;

VAR

 Teller : INTEGER;

 Lus    : INTEGER;

BEGIN

   GetHardDiskControlleNummer := '';

   Teller := 1;

   FOR Lus := 1 TO 3 DO

   BEGIN

     ControlleNummer[Teller] := CHR( ( HardDiskGegevens[23+Lus] DIV 256 ));

     Inc(Teller);

     ControlleNummer[Teller] := CHR( ( HardDiskGegevens[23+Lus] MOD 256 ));

     Inc(Teller);

   END;

   GetHardDiskControlleNummer := ControlleNummer;

END;

PROCEDURE GetHardDiskGegevens;

VAR

 Lus    : INTEGER;

BEGIN

 WHILE ( Port[$1f7] <> $50) DO ;

 Port[$1F6] := $A0 ;

 Port[$1F7] := $EC ;

 WHILE ( Port[$1f7] <> $58 ) DO ;

 FOR Lus := 1 TO 256 DO

 BEGIN

   HardDiskGegevens[Lus] := Portw[$1F0] ;

 END;

END;

END.