Get Hard Drive Serial Number Delphi
Function GetHDDSerialNumber(NomDriv e:byte): String; const IDENTIFY_BUFFER_SIZE = 512; type TIDERegs = packed record bFeaturesReg: BYTE; // Used for specifying SMART 'commands'. BSectorCountReg: BYTE; // IDE sector count register bSectorNumberReg: BYTE; // IDE sector number register bCylLowReg: BYTE; // IDE low order cylinder value bCylHighReg: BYTE; // IDE high order cylinder value bDriveHeadReg: BYTE; // IDE drive/head register bCommandReg: BYTE; // Actual IDE command. BReserved: BYTE; // reserved for future use. Must be zero. End; TSendCmdInParams = packed record // Buffer size in bytes cBufferSize: DWORD; // Structure with drive register values. IrDriveRegs: TIDERegs; // Physical drive number to send command to (0,1,2,3). BDriveNumber: BYTE; bReserved: Array[0.2] of Byte; dwReserved: Array[0.3] of DWORD; bBuffer: Array[0.0] of Byte; // Input buffer.
UlTotalAddressableSectors: DWORD; wSingleWordDMA: Word; wMultiWordDMA: Word; bReserved: Array[0.127] of BYTE; end; PIdSector = ^TIdSector; TDriverStatus = packed record // Error code from driver, or 0 if no error. BDriverError: Byte; // Contents of IDE Error register. Only valid when bDriverError is SMART_IDE_ERROR. BIDEStatus: Byte; bReserved: Array[0.1] of Byte; dwReserved: Array[0.1] of DWORD; end; TSendCmdOutParams = packed record // Size of bBuffer in bytes cBufferSize: DWORD; // Driver status structure. DriverStatus: TDriverStatus; // Buffer of arbitrary length in which to store the data read from the drive.
I built the code segment by using Delphi XE 7 and tested it on my. I use this to get hard drive serial number. How to read the serial no of hard disk? Jul 20, 2000 How can I get Hard Disk Serial Number? Gigatech (Programmer) (OP) 19 Jul 00 14:50. How can I get an unique number for a specific PC, for example HDD Serial Number or Motherboard serial number? Bd otdel kadrov access. RE: How can I get Hard Disk Serial Number? Pwesson (Programmer) 20 Jul 00 08:07.
BBuffer: Array[0.0] of BYTE; end; var hDevice: THandle; cbBytesReturned: DWORD; // ptr: PChar; SCIP: TSendCmdInParams; aIdOutCmd: Array [0.(SizeOf(TSendCmdOutParams)+IDENTIFY_BUFFER_SIZE-1)-1] of Byte; IdOutCmd: TSendCmdOutParams absolute aIdOutCmd; procedure ChangeByteOrder( var Data; Size: Integer ); var ptr: PChar; i: Integer; c: Char; begin ptr:= @Data; for i:= 0 to (Size shr 1)-1 do begin c:= ptr^; ptr^:= (ptr+1)^; (ptr+1)^:= c; Inc(ptr,2); end; end; const IdeDriveNom='. PhysicalDrive'; begin Result:='Error'; // return empty string on error.