_SENDCMDINPARAMS = packed record cBufferSize: DWORD; // Buffer size in bytes irDriveRegs: IDEREGS; // Structure with drive register values. bDriveNumber: BYTE; // Physical drive number to send // command to (0,1,2,3). bReserved: array [0..2] of BYTE; // Reserved for future expansion. dwReserved: array [0..3] of DWORD; // For future use. bBuffer: array [0..0] of BYTE; // Input buffer. end; ... _IDEREGS = 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;