CN110795364B - 一种ide模式下访问硬盘的方法 - Google Patents
一种ide模式下访问硬盘的方法 Download PDFInfo
- Publication number
- CN110795364B CN110795364B CN201911050284.4A CN201911050284A CN110795364B CN 110795364 B CN110795364 B CN 110795364B CN 201911050284 A CN201911050284 A CN 201911050284A CN 110795364 B CN110795364 B CN 110795364B
- Authority
- CN
- China
- Prior art keywords
- register
- base address
- hard disk
- address
- value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0615—Address space extension
- G06F12/063—Address space extension for I/O modules, e.g. memory mapped I/O
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
Abstract
本发明公开了一种IDE模式下访问硬盘的方法,其特征在于包括以下步骤:S100:判断硬盘的工作模式是否为IDE模式,如果是,执行步骤S200,否则,结束流程;S200:获取PCI配置空间,顺序读取前四个基地址寄存器的值;S300:确定各个IDE接口所属硬盘各自对应的基地址寄存器;S400:读取当前组第一个基地址寄存器的值作为命令寄存器的基地址;读取当前组第二个基地址寄存器的值作为控制寄存器的基地址;S500:确定各个寄存器的地址;S600:配置命令寄存器;S700:判断当前IDE接口所属硬盘的状态;S800:对数据寄存器进行相应数据操作,完成当前IDE接口所属硬盘的访问;S900:重复步骤S300至S800,完成另一IDE接口所属硬盘的访问。
Description
技术领域
本发明属于数据恢复与取证领域,涉及一种访问硬盘的方法,尤其涉及一种IDE模式下访问硬盘的方法。
背景技术
在数据恢复与取证领域中,随着硬盘容量的不断增加,加上硬盘性能也在不断提高,使得硬盘的用户群不断增加,硬盘的使用次数也急剧增加,硬盘的故障也随之提高。
一般的硬盘访问技术都是通过文件系统的方式,主要针对文件的读取、写入和删除。但是,硬盘中也存在其他的重要数据,包括MBR、DBR等。当这些重要数据被恶意的修改或者丢失后,电脑的磁盘管理器中将丢失所有的固件及管理数据,而用户的数据仍然真实存在,只是以文件系统的方式不能进行访问。这种情况下,难以实现对硬盘的读写、数据恢复与取证。现有技术正研究IDE模式下基于IO寄存器数据交互而实现访问硬盘的方法,目前为止,尚无一种在IDE模式下基于IO寄存器数据交互的硬盘访问方法。
发明内容
本发明针对现有技术的不足问题本发明提供了另一种访问硬盘的方法,即,IDE模式下基于IO寄存器的硬盘访问技术,通过这样的访问方式,就可以针对硬盘的重要数据进行保护,而且可以绕开文件系统直接对硬盘的数据进行访问。本发明申请包括以下步骤:
S100:判断硬盘的工作模式是否为IDE模式,如果是,执行步骤S200,否则,结束流程;
S200:获取PCI配置空间,并获取各个基地址寄存器的值,顺序读取前四个基地址寄存器的值;
S300:确定各个IDE接口所属硬盘各自对应的基地址寄存器:所述前四个基地址寄存器中,以第一、第二基地址寄存器为一组,以第三、第四基地址寄存器为另一组,各组分别对应并控制一个IDE接口所属硬盘;
S400:读取当前组第一个基地址寄存器的值作为命令寄存器的基地址,其IO空间包含数据读写寄存器、状态寄存器及命令寄存器;读取当前组第二个基地址寄存器的值作为控制寄存器的基地址,其IO空间包含控制寄存器;
S500:确定各个寄存器的地址,所述寄存器包括数据寄存器、错误/特征寄存器、扇区数寄存器、扇区号寄存器、柱面号低八位寄存器、柱面号高八位寄存器、设备/磁头寄存器及状态/命令寄存器;
S600:配置命令寄存器;
S700:判断当前IDE接口所属硬盘的状态:获取所述状态寄存器的值,判断其值所表示的状态是否为就绪,如果是,执行步骤S800,否则,执行步骤S700;
S800:对所述数据寄存器进行相应数据操作,完成当前IDE接口所属硬盘的访问;
S900:重复步骤S300至S800,完成另一IDE接口所属硬盘的访问。
优选地,所述寄存器的值均以小端格式存储。
优选地,所述步骤S500包括以下步骤:
S501:读取所述命令寄存器的基地址作为数据寄存器的地址,所述命令寄存器的基地址+0x01的值作为错误/特征寄存器的地址,所述命令寄存器的基地址+0x02的值作为扇区数寄存器的地址,所述命令寄存器的基地址+0x03的值作为扇区号寄存器的地址,所述命令寄存器的基地址+0x04的值作为柱面号低八位寄存器的地址,所述命令寄存器的基地址+0x05的值作为柱面号高八位寄存器的地址,所述命令寄存器的基地址+0x06的值作为设备/磁头寄存器的地址,所述命令寄存器的基地址+0x07的值作为状态/命令寄存器的地址;
S502:读取所述控制寄存器的基地址作为设备控制寄存器的地址。
优选地,所述步骤S600包括以下步骤:
根据对IDE接口所属硬盘所进行的相应操作,对所述错误/特征寄存器、所述扇区数寄存器、所述扇区号寄存器、所述柱面号低八位寄存器、所述柱面号高八位寄存器、所述设备/磁头寄存器及状态/命令寄存器进行赋值,完成命令寄存器的配置。
本发明具有以下有益效果是:解决了现有技术中尚无一种IDE模式下访问硬盘的方法的技术问题。
附图说明
图1为本发明所提供的方法的总流程图;
图2为本发明的一个实施例中PCI配置空间的示例图。
具体实施方式
S100:判断硬盘的工作模式是否为IDE模式,如果是,执行步骤S200,否则,结束流程。
在本发明的一个实施例中,通过检查系统的bios设置,可以看到,系统的硬盘工作模式有IDE以及AHCI两种方式,如果是IDE模式,执行步骤S200,否则,结束流程。
S200:获取PCI配置空间,并获取各个基地址寄存器的值,顺序读取前四个基地址寄存器的值;
具体地,PCI及PCIE配置空间的读取有两种方式:
1.通过操作IO端口0xCF8/CFC
_outpd(0xCF8,(1<<31)|(Bus<<16)|(Dev<<11)|(Fun<<8)|Reg),然后就可以通过读取0xCFC-0xCFF来获取BIT0~BIT32的值
_inp(0xCFC)
_inp(0xCFD)
_inp(0xCFE)
_inp(0xCFF)
_inpw(0xCFC)
_inpw(0xCFE)
_inpd(0xCFC)
2.通过内存地址直接读取
Intel Chipset的PciexBaseAddress一般从Bus0Dev0Fun0Reg60~64读取
address=PciexBaseAddress|(Bus<<20)|(Dev<<15)|(Fun<<12)|Reg;
图2示出了本发明的一个实施例中PCI配置空间的示例图。如图2所示,BAR1至BAR6为6个基地址寄存器及其值。值得注意的是,本发明中的寄存器的值及内存空间的值均以小端格式存储。
S300:确定各个IDE接口所属硬盘各自对应的基地址寄存器:前四个基地址寄存器中,以第一、第二基地址寄存器为一组,以第三、第四基地址寄存器为另一组,各组分别对应并控制一个IDE接口所属硬盘。具体地,硬盘的IDE模式访问技术,需要的是PCI配置空间的第1至第4个寄存器的基地址,PCI配置空间一共有六个基地址,如图2所示,BAR1-BAR6就分别代表PCI空间的这个六个基址寄存器,分别取出BAR1至BAR4的值,以BAR1和BAR2、BAR3和BAR4各为一组,每组寄存器控制一个IDE接口的硬盘。
S400:读取当前组第一个基地址寄存器的值作为命令寄存器的基地址,其IO空间包含数据读写寄存器、状态寄存器及命令寄存器;读取当前组第二个基地址寄存器的值作为控制寄存器的基地址,其IO空间包含控制寄存器。
具体地,如图2所示,以BAR3和BAR4为例,其中BAR3的值0xF091,表示命令寄存器的基地址;BAR4的值0xF081,表示控制寄存器的基地址,以BAR3为基地址的IO空间中包含数据读写寄存器、状态寄存器及命令寄存器等,以BAR4为基地址的IO空间中包含控制寄存器。
S500:确定各个寄存器的地址,寄存器包括数据寄存器、错误/特征寄存器、扇区数寄存器、扇区号寄存器、柱面号低八位寄存器、柱面号高八位寄存器、设备/磁头寄存器及状态/命令寄存器;具体地,步骤S500包括以下步骤:
S501:读取命令寄存器的基地址作为数据寄存器的地址,命令寄存器的基地址+0x01的值作为错误/特征寄存器的地址,命令寄存器的基地址+0x02的值作为扇区数寄存器的地址,命令寄存器的基地址+0x03的值作为扇区号寄存器的地址,命令寄存器的基地址+0x04的值作为柱面号低八位寄存器的地址,命令寄存器的基地址+0x05的值作为柱面号高八位寄存器的地址,命令寄存器的基地址+0x06的值作为设备/磁头寄存器的地址,命令寄存器的基地址+0x07的值作为状态/命令寄存器的地址;
S502:读取控制寄存器的基地址作为设备控制寄存器的地址。
S600:配置命令寄存器。具体地,步骤S600包括以下步骤:
根据对IDE接口所属硬盘所进行的相应操作,对错误/特征寄存器、扇区数寄存器、扇区号寄存器、柱面号低八位寄存器、柱面号高八位寄存器、设备/磁头寄存器及状态/命令寄存器进行赋值,完成命令寄存器的配置。
S700:判断当前IDE接口所属硬盘的状态:获取状态寄存器的值,判断其值所表示的状态是否为就绪,如果是,执行步骤S800,否则,执行步骤S700;
S800:对数据寄存器进行相应数据操作,完成当前IDE接口所属硬盘的访问。例如,对上述7个寄存器,即,错误/特征寄存器、扇区数寄存器、扇区号寄存器、柱面号低八位寄存器、柱面号高八位寄存器、设备/磁头寄存器及状态/命令寄存器各个赋值为0x00、0x01、0x00、0x00、0x00、0x40及0x25。具体地,通过调用inpout_x86.dll中的函数DlPortWritePortUchar(UInt16 port,byte Value)实现赋值,并调用函数UInt16DlPortReadPortUshort(UInt16 port)实现读取响应的数据。这样,通过调用两个函数,实现的功能就是从硬盘的第一个扇区读取一个扇区的数据。
S900:重复步骤S300至S800,完成另一IDE接口所属硬盘的访问。
通过本发明提供的方法,解决了现有技术中尚无一种IDE模式下访问硬盘的方法的技术问题。
应当理解的是,本发明不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。
Claims (3)
1.一种IDE模式下访问硬盘的方法,其特征在于包括以下步骤:
S100:判断硬盘的工作模式是否为IDE模式,如果是,执行步骤S200,否则,结束流程;
S200:获取PCI配置空间,并获取各个基地址寄存器的值,顺序读取前四个基地址寄存器的值;
S300:确定各个IDE接口所属硬盘各自对应的基地址寄存器:所述前四个基地址寄存器中,以第一、第二基地址寄存器为一组,以第三、第四基地址寄存器为另一组,各组分别对应并控制一个IDE接口所属硬盘;
S400:读取当前组第一个基地址寄存器的值作为命令寄存器的基地址,其IO空间包含数据读写寄存器、状态寄存器及命令寄存器;读取当前组第二个基地址寄存器的值作为控制寄存器的基地址,其IO空间包含控制寄存器;
S500:确定各个寄存器的地址,所述寄存器包括数据寄存器、错误/特征寄存器、扇区数寄存器、扇区号寄存器、柱面号低八位寄存器、柱面号高八位寄存器、设备/磁头寄存器及状态/命令寄存器,步骤S500包括以下步骤:
S501:读取所述命令寄存器的基地址作为数据寄存器的地址,所述命令寄存器的基地址+0x01的值作为错误/特征寄存器的地址,所述命令寄存器的基地址+0x02的值作为扇区数寄存器的地址,所述命令寄存器的基地址+0x03的值作为扇区号寄存器的地址,所述命令寄存器的基地址+0x04的值作为柱面号低八位寄存器的地址,所述命令寄存器的基地址+0x05的值作为柱面号高八位寄存器的地址,所述命令寄存器的基地址+0x06的值作为设备/磁头寄存器的地址,所述命令寄存器的基地址+0x07的值作为状态/命令寄存器的地址;
S502:读取所述控制寄存器的基地址作为设备控制寄存器的地址;
S600:配置命令寄存器;
S700:判断当前IDE接口所属硬盘的状态:获取所述状态寄存器的值,判断其值所表示的状态是否为就绪,如果是,执行步骤S800,否则,执行步骤S700;
S800:对所述数据寄存器进行相应数据操作,完成当前IDE接口所属硬盘的访问;
S900:重复步骤S300至S800,完成另一IDE接口所属硬盘的访问。
2.根据权利要求1所述的一种IDE模式下访问硬盘的方法,其特征在于,所述寄存器的值均以小端格式存储。
3.根据权利要求1所述的一种IDE模式下访问硬盘的方法,其特征在于,所述步骤S600包括以下步骤:
根据对IDE接口所属硬盘所进行的相应操作,对所述错误/特征寄存器、所述扇区数寄存器、所述扇区号寄存器、所述柱面号低八位寄存器、所述柱面号高八位寄存器、所述设备/磁头寄存器及状态/命令寄存器进行赋值,完成命令寄存器的配置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911050284.4A CN110795364B (zh) | 2019-10-31 | 2019-10-31 | 一种ide模式下访问硬盘的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911050284.4A CN110795364B (zh) | 2019-10-31 | 2019-10-31 | 一种ide模式下访问硬盘的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110795364A CN110795364A (zh) | 2020-02-14 |
CN110795364B true CN110795364B (zh) | 2023-06-02 |
Family
ID=69442330
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911050284.4A Active CN110795364B (zh) | 2019-10-31 | 2019-10-31 | 一种ide模式下访问硬盘的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110795364B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1254887A (zh) * | 1993-07-23 | 2000-05-31 | 国际商业机器公司 | 对页面目录基寄存器值进行估算和验证的方法 |
US6112260A (en) * | 1996-01-31 | 2000-08-29 | Compaq Computer Corporation | Method and apparatus for redirecting input/output device data in a computer system through use of debug registers |
CN101122887A (zh) * | 2007-01-17 | 2008-02-13 | 晶天电子(深圳)有限公司 | 一种采用数据区域切换指针缓冲硬盘驱动器的闪存卡 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1053507C (zh) * | 1994-10-07 | 2000-06-14 | 邵通 | 计算机硬盘读写控制装置 |
US7155379B2 (en) * | 2003-02-25 | 2006-12-26 | Microsoft Corporation | Simulation of a PCI device's memory-mapped I/O registers |
CN100367226C (zh) * | 2005-06-28 | 2008-02-06 | 联想(北京)有限公司 | 一种利用智能设备的固件实现部件检测的方法 |
US7765384B2 (en) * | 2007-04-18 | 2010-07-27 | International Business Machines Corporation | Universal register rename mechanism for targets of different instruction types in a microprocessor |
CN102194064B (zh) * | 2010-03-12 | 2013-07-10 | 中国长城计算机深圳股份有限公司 | 一种i/o监控方法 |
CN102799396B (zh) * | 2012-07-22 | 2015-09-16 | 北京忆恒创源科技有限公司 | 存储设备、中断控制方法以及供电时间测量方法 |
CN104281413B (zh) * | 2013-07-10 | 2017-10-20 | 群联电子股份有限公司 | 命令队列管理方法、存储器控制器及存储器储存装置 |
KR102501776B1 (ko) * | 2018-01-31 | 2023-02-21 | 에스케이하이닉스 주식회사 | 저장 장치 및 그 동작 방법 |
-
2019
- 2019-10-31 CN CN201911050284.4A patent/CN110795364B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1254887A (zh) * | 1993-07-23 | 2000-05-31 | 国际商业机器公司 | 对页面目录基寄存器值进行估算和验证的方法 |
US6112260A (en) * | 1996-01-31 | 2000-08-29 | Compaq Computer Corporation | Method and apparatus for redirecting input/output device data in a computer system through use of debug registers |
CN101122887A (zh) * | 2007-01-17 | 2008-02-13 | 晶天电子(深圳)有限公司 | 一种采用数据区域切换指针缓冲硬盘驱动器的闪存卡 |
Also Published As
Publication number | Publication date |
---|---|
CN110795364A (zh) | 2020-02-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101954995B1 (ko) | 저장 매체에 라이트 된 데이터 머지 방법, 저장 매체에 대한 라이트 동작 제어 방법, 이를 적용한 저장 장치, 컴퓨터 시스템 및 저장 매체 | |
US7424719B2 (en) | Application with multiple embedded drivers | |
US8180930B2 (en) | Information processing device, and device initialization method in the information processing device | |
JP7088897B2 (ja) | データアクセス方法、データアクセス装置、機器及び記憶媒体 | |
US20070168603A1 (en) | Information recording apparatus and control method thereof | |
US20210056078A1 (en) | Identifying and correlating physical devices across disconnected device stacks | |
CN103853535A (zh) | 修改中间件的方法和装置 | |
US20140046902A1 (en) | Method for a cloning process to enable cloning a larger System drive to a smaller system | |
CN107451271A (zh) | 一种哈希表处理方法、装置、设备及存储介质 | |
CN110795364B (zh) | 一种ide模式下访问硬盘的方法 | |
CN112417802B (zh) | 一种模拟存储芯片的方法、系统、设备及存储介质 | |
US7437503B2 (en) | Method and apparatus for handling data transfers | |
US8595426B2 (en) | Handling commands within a write-once read-many storage device configuration | |
JPWO2005103909A1 (ja) | セキュリティ保全方法およびデータ蓄積装置、セキュリティ保全サーバ、及びそのプログラムを記録した記録媒体 | |
CN111782474A (zh) | 日志处理方法、装置、电子设备和介质 | |
CN110209349B (zh) | 数据处理的方法及终端设备 | |
WO2020113421A1 (zh) | 一种挂载文件系统的方法、终端设备及存储介质 | |
CN112181275A (zh) | 一种数据处理器及数据处理方法 | |
CN109726166A (zh) | 电子书的显示方法、装置、计算机设备和可读存储介质 | |
CN110765033B (zh) | 一种ahci模式下访问硬盘的方法 | |
CN107179969A (zh) | 一键设置Benchmark测试的BIOS选项的装置及方法 | |
CN112527202A (zh) | 闪存存储器的管理方法、系统、终端设备及存储介质 | |
US20230209089A1 (en) | Reducing file sizes for media content | |
US20220027159A1 (en) | Widening memory access to an aligned address for unaligned memory operations | |
US8856414B2 (en) | Determining required software components for SCSI system initialization |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |