📄 bios_hd.h
字号:
#ifndef BIOS_HD_H
#define BIOS_HD_H
/* some registers are defined as follow */
#define Status_Register 0x1F7
#define Data_Register 0x1F0
#define Error_Register 0x1F1
#define Write_Register 0x1F1
#define Sector_Number_Register 0x1F2
#define Sector_Register 0x1F3
#define Cylinder_Register_Low 0x1F4
#define Cylinder_Register_High 0x1F5
#define Drive_Register 0x1F6
#define Command_Register 0x1F7
#define Control_Register 0x3F6
/* some flags as in the status register */
#define Drive_Busy 0x80
#define Drive_Ready 0x40
#define Drive_Error 0x20
#define Seek_Finish 0x10
#define Drive_Requst 0x08
#define ECC 0x04
#define Index 0x02
#define Error 0x01
/* some command definition */
#define Drive_Restore 0x10
#define Read_Sector 0x20
#define Write_Sector 0x30
#define Verify_Sector 0x40
#define Format_Track 0x50
#define Init_Controller 0x60
#define Seek_Track 0x70
#define Diagnose 0x90
#define Specify 0x91
#define Identify_Drive 0xEC
typedef struct {
unsigned short config; /* lots of obsolete bit flags */
unsigned short cyls; /* "physical" cyls */
unsigned short reserved2; /* reserved (word 2) */
unsigned short heads; /* "physical" heads */
unsigned short track_bytes; /* unformatted bytes per track */
unsigned short sector_bytes; /* unformatted bytes per sector */
unsigned short sectors; /* "physical" sectors per track */
unsigned short vendor0; /* vendor unique */
unsigned short vendor1; /* vendor unique */
unsigned short vendor2; /* vendor unique */
unsigned char serial_no[20]; /* 0 = not_specified */
unsigned short buf_type;
unsigned short buf_size; /* 512 byte increments; 0 = not_specified */
unsigned short ecc_bytes; /* for r/w long cmds; 0 = not_specified */
unsigned char fw_rev[8]; /* 0 = not_specified */
unsigned char model[40]; /* 0 = not_specified */
unsigned char max_multsect; /* 0=not_implemented */
unsigned char vendor3; /* vendor unique */
unsigned short dword_io; /* 0=not_implemented; 1=implemented */
unsigned char vendor4; /* vendor unique */
unsigned char capability; /* bits 0:DMA 1:LBA 2:IORDYsw 3:IORDYsup*/
unsigned short reserved50; /* reserved (word 50) */
unsigned char vendor5; /* vendor unique */
unsigned char tPIO; /* 0=slow, 1=medium, 2=fast */
unsigned char vendor6; /* vendor unique */
unsigned char tDMA; /* 0=slow, 1=medium, 2=fast */
unsigned short field_valid; /* bits 0:cur_ok 1:eide_ok */
unsigned short cur_cylinders; /* logical cylinders */
unsigned short cur_heads; /* logical heads */
unsigned short cur_sectors; /* logical sectors per track */
unsigned short cur_capacity0; /* logical total sectors on drive */
unsigned short cur_capacity1; /* (2 words, misaligned int) */
unsigned char multsect; /* current multiple sector count */
unsigned char multsect_valid; /* when (bit0==1) multsect is ok */
unsigned int lba_capacity; /* total number of sectors */
unsigned short dma_1word; /* single-word dma info */
unsigned short dma_mword; /* multiple-word dma info */
unsigned short eide_pio_modes; /* bits 0:mode3 1:mode4 */
unsigned short eide_dma_min; /* min mword dma cycle time (ns) */
unsigned short eide_dma_time; /* recommended mword dma cycle time (ns) */
unsigned short eide_pio; /* min cycle time (ns), no IORDY */
unsigned short eide_pio_iordy; /* min cycle time (ns), with IORDY */
unsigned short word69;
unsigned short word70;
/* HDIO_GET_IDENTITY currently returns only words 0 through 70 */
unsigned short word71;
unsigned short word72;
unsigned short word73;
unsigned short word74;
unsigned short word75;
unsigned short word76;
unsigned short word77;
unsigned short word78;
unsigned short word79;
unsigned short word80;
unsigned short word81;
unsigned short command_sets; /* bits 0:Smart 1:Security 2:Removable 3:PM */
unsigned short word83; /* bits 14:Smart Enabled 13:0 zero */
unsigned short word84;
unsigned short word85;
unsigned short word86;
unsigned short word87;
unsigned short dma_ultra;
unsigned short word89; /* reserved (word 89) */
unsigned short word90; /* reserved (word 90) */
unsigned short word91; /* reserved (word 91) */
unsigned short word92; /* reserved (word 92) */
unsigned short word93; /* reserved (word 93) */
unsigned short word94; /* reserved (word 94) */
unsigned short word95; /* reserved (word 95) */
unsigned short word96; /* reserved (word 96) */
unsigned short word97; /* reserved (word 97) */
unsigned short word98; /* reserved (word 98) */
unsigned short word99; /* reserved (word 99) */
unsigned short word100; /* reserved (word 100) */
unsigned short word101; /* reserved (word 101) */
unsigned short word102; /* reserved (word 102) */
unsigned short word103; /* reserved (word 103) */
unsigned short word104; /* reserved (word 104) */
unsigned short word105; /* reserved (word 105) */
unsigned short word106; /* reserved (word 106) */
unsigned short word107; /* reserved (word 107) */
unsigned short word108; /* reserved (word 108) */
unsigned short word109; /* reserved (word 109) */
unsigned short word110; /* reserved (word 110) */
unsigned short word111; /* reserved (word 111) */
unsigned short word112; /* reserved (word 112) */
unsigned short word113; /* reserved (word 113) */
unsigned short word114; /* reserved (word 114) */
unsigned short word115; /* reserved (word 115) */
unsigned short word116; /* reserved (word 116) */
unsigned short word117; /* reserved (word 117) */
unsigned short word118; /* reserved (word 118) */
unsigned short word119; /* reserved (word 119) */
unsigned short word120; /* reserved (word 120) */
unsigned short word121; /* reserved (word 121) */
unsigned short word122; /* reserved (word 122) */
unsigned short word123; /* reserved (word 123) */
unsigned short word124; /* reserved (word 124) */
unsigned short word125; /* reserved (word 125) */
unsigned short word126; /* reserved (word 126) */
unsigned short word127; /* reserved (word 127) */
unsigned short security; /* bits 0:support 1:enabled 2:locked 3:frozen */
unsigned short reserved[127];
}hd_id;
#endif /* BIOS_HD_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -