⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bios_hd.h

📁 linux下面直接读硬盘扇区的程序
💻 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 + -