一种西数硬盘已使用固件区的数据擦除方法与流程

文档序号:17585210发布日期:2019-05-03 21:15阅读:1638来源:国知局
一种西数硬盘已使用固件区的数据擦除方法与流程

本发明涉及一种硬盘数据擦除方法,特别是涉及一种西数硬盘已使用固件区的数据擦除方法。



背景技术:

据2015年卡巴斯基的报告表明(https://www.ithome.com/html/it/130313.htm),美国国家安全局可能在硬盘固件中植入了病毒。在这份报告中,卡巴斯基提到很多大品牌硬盘可能均受到影响,西数硬盘就是其中之一。

由于病毒被写入了硬盘固件区,嵌入到硬盘的固件程序里面了,当硬盘通电之后,硬盘固件程序自检的时候,会自动激活病毒,并且把病毒释放到用户区(用户区就是计算机操作系统可以访问的区域)。硬盘自检完毕之后,计算机主机才能识别到硬盘,这时操作系统才能启动,操作系统启动的同时病毒也会自动运行,这些病毒可以将敏感数据复制到硬盘固件区,待时机成熟再传输给病毒的作者。

即使用户区的病毒被发现被杀掉清除掉,计算机再次启动的时候,固件区的母体病毒又会释放出新的病毒,不仅如此,低级格式化、高级格式化和分区等操作均无法彻底清除母体病毒,因为现有杀毒软件无法访问硬盘固件区,而病毒母体就躲在硬盘固件区,那也就无法发现和清除病毒的母体。

目前市面上大多数擦除机只能擦除用户数据区的数据,有个别的擦除机可以擦除用户数据屏蔽区的数据(目前还没有看到实物或得到证实)。其它区域的数据现阶段还没有一款设备可以自动擦除的,一旦硬盘内部植入了病毒或木马程序,把涉密数据隐藏到用户数据区以外的区域现阶段是没有擦除机能擦除的,目前也没有设备或软件可以检测出来。这样会造成极大的安全隐患。所以对用户数据区以外区域的数据检查和数据擦除研究是非常必要的。

现有市场上的擦除机跟西数硬盘交互用的都是ata协议标准指令集,而标准指令集是无法操作硬盘固件区以及隐藏的屏蔽区。ata协议标准指令集只能读写用户数据区,例如一个500gb的西数硬盘,在主板bios里面识别到的也是500g,那么现有的擦除机只能擦除这500g空间里面所分的区及各类数据文件、底层代码。但实际上这个硬盘的物理存储空间是大于500gb的,这些看不到的空间是被屏蔽的或用于存放硬盘固件(fw)的,这些区域只有通过工厂自定义指令集才可以读写该区域数据。



技术实现要素:

针对上述问题,本发明的目的是提供一种西数硬盘已使用固件区的数据擦除方法,该方法可以把西数硬盘已使用固件区的数据清0或填充任意数值。

为实现上述目的,本发明采取以下技术方案:一种西数硬盘已使用固件区的数据擦除方法,其包括以下步骤:

1)对西数硬盘已使用固件区进行擦除时,通过ata标准协议指令集和硬盘工厂自定义指令集实现对硬盘已使用固件区的数据进行擦除;

2)对存在保留区的西数硬盘的进行擦除时,首先将磁盘容量还原,然后使用标准api,对保留区逐扇区覆盖写入数据,实现擦除。

进一步地,所述步骤1)中,对西数硬盘已使用固件区进行擦除时,通过ata标准协议指令集和硬盘工厂自定义指令集实现对硬盘已使用固件区的数据进行擦除的方法,包括以下步骤:

1.1)发送工厂key使硬盘进入工厂模式,若发送失败,硬盘无法解锁固件模式,则返回“失败”;若发送成功,则直接进入步骤1.2);

1.2)用工厂自定义指令集读取已使用固件区的目录模块信息;

1.3)根据读取的目录模块信息计算已使用固件区域并擦除。

进一步地,所述步骤1.3)中,根据读取的目录模块信息计算已使用固件区域并擦除的方法,包括以下步骤:

①初始化区域表;

②对已经读取的目录模块信息进行遍历操作;

③计算已经使用的固件区域,并标记在步骤①的区域表内;

④通过ata标准协议指令对区域表外的数据进行擦除。

进一步地,所述步骤2)中,对存在保留区的西数硬盘的进行擦除时,首先将磁盘容量还原,然后使用标准api,对保留区逐扇区覆盖写入数据的方法,包括以下步骤:

2.1)发送工厂key使硬盘进入工厂模式,若发送失败,硬盘无法解锁固件模式,则返回“失败”;若发送成功,则直接进入步骤2.2);

2.2)修改保留区的最大lba值;

2.3)对修改最大lba值后的数据区,使用标准api对数据区的各扇区进行填充。

进一步地,所述步骤2.2)中,修改保留区的最大lba值的方法为:

①判断当前保留区的最大lba是否大于阈值,如果大于阈值且控制命令类型为1,则返回错误,否则,进入步骤②;

②获取硬盘本身的最大lba值;

③当硬盘返回命令后,发送lba重置命令并且以ata方式写入硬盘。

进一步地,所述步骤2.3)中,对修改最大lba后的数据区,使用api填充数据区的方法,包括以下步骤:

①向系统申请1048576字节大小的内存;

②初始化步骤①中申请的内存,将1048576个字节的内存块清0;

③设置偏移地址并初始化为0;

④当偏移地址小于最大lba值时做循环,最大lba值即为填充的用户区大小;

⑤调用写api函数对数据区进行擦除,每次擦除1048576个字节,直到擦完数据区为止。

本发明由于采取以上技术方案,其具有以下优点:1、本发明采用ata标准协议指令集和硬盘工厂自定义指令集实现了对硬盘已使用固件区的擦除,擦除方法简单有效。2、本发明对存在保留区的系数银盘进行擦除时,首先将磁盘容量还原,然后使用标准api,对保留区逐扇区覆盖写入数据,数据擦除可靠且方便快捷。因此,本发明可以广泛应用于西数硬盘的数据擦除领域。

附图说明

图1是本发明硬盘盘面的轨道划分示意图;

图2是本发明缺陷数据结构示意图;

图3是本发明坏扇区加入到p表后的扇区结构示意图;

图4是本发明坏扇区加入到g表后的扇区结构示意图;

图5是本发明01模块的部分截图;

图6是本发明02模块的部分截图;

图7是本发明02模块的结尾示意图;

图8是本发明03模块示意图;

图9是本发明中03模块的结尾示意图;

图10是本发明用工厂自定义指令集读取目录模块的流程示意图;

图11是本发明修改最大lba流程示意图;

图12是本发明使用api填充数据区流程示意图。

具体实施方式

下面结合附图和实施例对本发明进行详细的描述。

本发明首先对西数机械硬盘数据分布情况及说明进行介绍。

一、硬盘分区

西数硬盘上有数据的地方一共有11处,分别是:用户数据区、保留区、已使用固件区、未使用固件区、永久缺陷表屏蔽区、增长缺陷表屏蔽区、固件区缺陷表屏蔽区、段位屏蔽区、未使用盘面屏蔽区、nvram数据区、固态缓存区。这11处,都是可读可写的。但是市面上现有的擦除机只能擦除用户数据区,另外10处的数据是无法擦除的。但是本发明通过实验确定用工厂自定义指令集可以擦除另外10处的数据。

如图1所示,硬盘盘面的全部轨道划分为固件区、用户区、保留区,其中固件区和保留区普通用户是无法访问的。其实硬盘的实际物理空间比我们看到的硬盘标签上标定的要大,这一部份就是固件区和保留区。其中,固件区包含:已使用固件区、未使用固件区、永久缺陷表屏蔽区、增长缺陷表屏蔽区、固件区缺陷表屏蔽区、段位屏蔽区、未使用盘面屏蔽区。用户区是用户用于存放应用数据的区域(例如c:d:e:操作系统及存放数据的分区)即用户区,也就是硬盘表面标签标定的扇区数(lba数)乘以每扇区512字节就是用户区总容量。剩下的就是保留区。下面从用途说明、特点、空间大小和数据读取方法的角度对各区进行介绍。

1:用户数据区

(1)用户数据区是硬盘提供给用户存放数据的区域。

(2)用户区数据寻址采用lba寻址模式以扇区为单位进行寻址,在该模式中,盘片上的所有物理扇区都是一个连续的、线性编号的存储空间,即由0开始一直排列到某个最大值lbamax,并且连成一条线,这样只用一个序数就确定了一个唯一的物理扇区。此时,要定位到硬盘上的某个位置,只需要给出其lba数即可,这种寻址模式所表示的数据位置已不是它在盘片上的物理地址,而是逻辑地址。

(3)空间大小:160gb、320gb、500gb、1tb、2tb、3tb、4tb、6tb、8tb、10tb、12tb等。

(4)数据读取方法:使用标准api读取用户区数据。

2:保留区(隐藏区)

(1)将原lbamax值修改成比原值小的值lbamaxnew,可屏蔽lbamaxnew~lbamax区的数据,且只能屏蔽后磁盘面的扇区。

(2)屏蔽的数据不能直接通过标准api访问里面的数据。

(3)空间大小:小于硬盘容量。

(4)数据读取方法:使用特殊命令将磁盘容量还原,然后直接通过标准api访问屏蔽区的数据。

3:已使用固件区

(1)硬盘的固件存放已使用的区域。固件又称firmware,通俗的理解就是“固化在硬件中的软件”,其担任着一个系统最基础最底层的工作。对硬盘固件,可以这样来理解:假设硬盘是一台电脑主机,固件则相当于bios和操作系统程序,里面装的是用汇编语言编写的引导命令、控制语句和执行语句,协调和控制硬盘各个内部部件之间相互作用。

(2)固件区不同于用户区,固件区的数据访问需进入其工厂模式,然后通过特有的命令读写固件区扇区。修改固件区的数据可能会导致硬盘不能正常工作。

(3)空间大小:大概几百mb。

(4)数据读取方法:发送此硬盘对应得工厂key进入工厂模式,然后通过特有的命令读写固件区扇区。

4:未使用固件区

(1)划分给固件使用,但没有使用的区域。

(2)未使用的固件区域底层数据一般都是0x00,也有些扇区没用初始化,读取没有初始化的扇区是会报错。

(3)空间大小:大概几百mb。

(4)数据读取方法:发送此硬盘对应得工厂key进入工厂模式,然后通过特有的命令读写固件区扇区,没初始化的扇区无法读取。

5:永久缺陷表屏蔽区(轨道、扇区屏蔽)

(1)用于屏蔽硬盘生产过程中产生的缺陷。

(2)加入p表不会影响硬盘的读写性能;可存储的条目较多,可以用来砍头和屏蔽段位。

(3)空间大小:根据硬盘的缺陷确定。

(4)数据读取方法:找出异常p表条目将其删除(正常常条目指向的扇区都是坏扇区,释放出来也读取不了),重建硬盘的编译器。删除错误的条目会使硬盘出现大量坏道,硬盘无法正常使用。使用api读取硬盘数据。

6:增长缺陷表屏蔽区(轨道、扇区屏蔽)

(1)g表又称为增长缺陷列表,是用于屏蔽硬盘使用过程中由于磁介质性能变弱而引起的缺陷。

(2)增长缺陷列表可添加的条目少,可屏蔽的扇区比较少;大部分盘的g-list是空的。缺陷扇区被加入g表后,当硬盘需要读该扇区时,会被重定位到保留扇区中的一个扇区,硬盘工作区的其它扇区不会受影响。由于保留扇区在硬盘的内道,读写速度慢,同时由于该扇区会导致硬盘的数据存储从物理上来说不连续了,当磁头读取该扇区的数据时需要移动较远的距离,代替坏扇区后,该lba的读写速度会慢一些,所以我们说缺陷扇区加入g表后会影响硬盘的读写速度。

(3)空间大小:较小

(4)数据读取方法:不使用g表或删除g表中的条目重建硬盘的编译器。不使用g表删除g表中的条目重建硬盘的编译器可能会使硬盘出现坏道,硬盘无法正常使用。使用api读取硬盘数据。

7:固件区缺陷表屏蔽区(轨道、扇区屏蔽)

(1)屏蔽盘片固件区的坏扇区。

(2)扇区有限,添加缺陷可能会使硬盘不能正常工作。不能通过常规方法访问。

(3)空间大小有限,空间小于固件区大小减去固件实际大小。

(4)数据读取方法:发送此硬盘对应得工厂key进入工厂模式,然后通过特有的命令直接读取其对应的固件区磁道扇区。

8:段位屏蔽区

(1)屏蔽硬盘存在大量坏扇区的区域。

(2)可以将需屏蔽段位的磁道加入到p表,然后低格。有的厂商的硬盘支持关闭段位,然后低格。可以屏蔽比较大的空间,屏蔽后磁盘容量变小。

(3)可屏蔽空间较大。

(4)数据读取方法:找出屏蔽段位在p表中异常条目将其删除,重建硬盘的编译器。删除错误的条目会使硬盘出现大量坏道,硬盘无法正常使用。使用api读取硬盘数据。

9:未使用盘面屏蔽区(砍头屏蔽区)

(1)硬盘工厂为了在一条流水线上生产不同容量的磁盘,一般是通过增减硬盘碟片数量和磁头数量来实现的。当库存不足的时候,如果大容量硬盘市场需求大只能等待再生产,如果小容量硬盘市场需求量大则工厂通常采取大改小的策略,也就是把大容量硬盘的某几个磁头在硬盘固件里面屏蔽掉,对应的这几个盘面也就无法读取使用了,硬盘的容量自然就变小了。这些屏蔽的空间,就是未使用盘面屏蔽区。这个区域只能通过工厂自定义指令集才能释放才能访问。

(2)可屏蔽空间较大;

(3)数据读取方法:找出异常p表条目将其删除,重建硬盘的编译器。删除错误的条目会是硬盘出现大量坏道,硬盘无法正常使用。使用api读取硬盘数据。

10:nvram数据区

(1)存放引导程序、盘片固件区和数据区的入口地址等,相当于一台电脑主机的bios。

(2)存放在电路板上的flash芯片中,容量小非易失。

(3)空间大小:大概几kb到几mb。

(4)数据读取方法:

①发送此硬盘对应得工厂key进入工厂模式,然后通过特有的命令读写nvram数据区。

②用flash编程器读取数据(需焊接芯片,有专业设备等)。

11:固态缓存区(混合盘)

(1)固态混合硬盘(sshd:solidstatehybriddrive)是把磁性硬盘和闪存集成到一起的一种硬盘。原理和微软windows7和windows8操作系统上的“readyboost”功能相似,两者都是通过增加高速闪存来进行资料预读取(prefetch),以减少从硬盘读取资料的次数,从而提高性能。磁盘存储介质,闪存仅起到了缓冲作用,将更多的常用文件保存到闪存内减小寻道时间,提升效率。

(2)闪存仅起到了缓冲作用,将更多的常用文件保存到闪存内减小寻道时间,提升效率。

(3)8gb、16gb等。

(4)数据读取方法:

①用flash编程器读取数据(需焊接芯片,有专业设备等)

②厂家提供命令读取芯片中的缓存数据。

二、缺陷表原理

1:缺陷数据结构:

如图2所示,我们知道硬盘的数据存储密度很大,在生产过程中不可避免地会产生缺陷扇区,同时在使用过程中,那些不稳定的扇区也会逐渐老化而产生数据读写错误,成为缺陷扇区,这些缺陷和不稳定扇区会严重威胁硬盘数据的安全,为此,硬盘设计了两个缺陷列表p-list和g-list来处理这些有缺陷的扇区。p表和g表用于记录硬盘的缺陷扇区的情况,使硬盘在工作时不会在缺陷扇区中读写数据,防止数据损坏。

2:用户区p-list(永久缺陷列表)

如图3所示,硬盘厂家在生产盘片过程极其精密,但也极难做到100%的完美,硬盘盘面上或多或少存在一些缺陷。厂家在硬盘出厂前会把所有的硬盘都进行低级格式化,在低级格式化过程中将自动找出所有defecttrack(存在缺陷的轨道)和defectsector(存在缺陷的扇区),记录在p-list中。然后在对所有磁道和扇区的编号过程中,将skip(跳过)这些缺陷部分,让用户永远不能用到它们。这样,用户在分区、格式化、检查刚购买的新硬盘时,很难发现有问题。一般的硬盘都在p-list中记录有一定数量的defect,少则数百,多则数以万计。

3:用户区g-list(增长缺陷列表)

如图4所示,用户在使用硬盘过程中,有可能会发现一些新的defectsector。按“三包”规定,只要出现一个defectsector,商家就应该为用户换或修。现在大容量的硬盘出现一个defectsector概率实在很大,这样的话硬盘商家就要为售后服务忙碌不已了。于是,硬盘厂商设计了一个自动修复机制,叫做automaticreallcation。大多数型号的硬盘都有这样的功能:在对硬盘的读写过程中,如果发现一个defectsector,则自动分配一个备用扇区替换该扇区,并将该扇区及其替换情况记录在g-list中。这样一来,少量的defectsector对用户的使用没有太大的影响。

当然,g-list的记录不会无限制,所有的硬盘都会限定在一定数量范围内。如火球系列限度是500,美钻二代的限度是636,西数bb的限度是508,等等。超过限度,automaticreallcation就不能再起作用。

三、西数盘片上固件区重要模块原理

1:01模块(模块目录):

01模块是一个模块目录,它定义了所有模块的信息。每一组模块信息包含模块备份数量、模块id、模块长度、该模块各个备份的起始地址。

如图5所示,为01模块(模块目录)的部分截图,除模块头外,其余都是不同的模块信息。在模块头中:

框1:有效数据的开始地址,也可以称作模块头的大小(字节)。即从第一个字节开始,到第48个字节结束,为模块头部分(3000为16进制的倒序,即0030,0x0030=48)。

框2:本模块的id。(01模块本身的id即0001(1000倒序))。

框3:本模块的长度(这里为01模块长度)。

框4:模块的校验值(该字段在其他字节修改并保存后会根据一定算法变化)

框5:模块版本信息(该区域看ascaii码区,该01模块版本为00020000)

框6:模块的数量(不包含01模块在内的其他所有模块总数)

框7:表示本条模块在01模块中占用的字节数(这里为0x12,即一条模块信息为18字节)

框8:本条模块的备份数量。

框9:本条模块的模块id。

框10:本条模块的长度(本条模块在固件区中占用的扇区数)

框11:本条模块第一个模块备份的地址。(称作copy0起始地址)

框12:本条模块第二个模块备份的地址。(称作copy1起始地址)

2:02模块(硬盘id参数):

02模块是硬盘的参数模块,包括硬盘的型号(model)、序列号(sn)、容量大小、密码信息、常见问题的处理、相关硬盘配置节点、固件锁(导致无法正常访问)等相关信息。修复西数固件通病所需要的模块。

如图6所示:所有模块的模块头部各个字节含义都基本相同,参考01模块,不再赘述。

框1:硬盘序列号;

框2:每四个字节表示硬盘容量(扇区数);

框3:启动慢问题的地址指向,共4个字节,左边两个字节为指向位置,在本模块中的起始位置,后两个字节表示指向位置在本模块中占用的字节数。

如图7所示,各框的含义分别为:

框1:表示该硬盘生产日期;

框2:这两个字节描述该硬盘密码信息,第一个01表示密码标记,后面的01就是密码位置,如果硬盘被加密,后面的01会发生变化,但密码标记不会变;

框3:该区域共57个字节,即启动慢问题指向地址的内容,如果西数硬盘存在启动慢问题,即把该字段填00,写入硬盘即可;

02模块可以初步分为3大部分:通用模块头+子模块的指针+子模块具体属性:

①通用模块头为西数royl系列通用,在01模块中已讲解,不再赘述。

②子模块指针:是从模块头中得到的有效数据起始位置开始的,即偏移位置0x30

0x30~0x31:本模块中子模块指针的数量,越新款盘的02,子模块指针越多;从偏移位置0x31往后,每四个字节为一组模块信息;每一组模块信息中,前两个字节表示模块内容的偏移位置,后两个字节表示模块内容的在本模块中所占用字节长度。

③子模块具体属性:通过子模块指针定位的子模块的具体内容。

3:03模块(硬盘段位表):

03模块里面涵盖了段位信息、tpi和cap信息,是访问轨道所需要的模块,非常重要的模块。其中,tpi表示硬盘密度,cap表示硬盘容量。

如图8所示,图中各框的含义分别为:

框1:表示段位的个数。

框2:段位表,每4个字节定义1个段位。

如图9所示,为03模块的结尾,0x8d500~0x8d50f:每4个字节定义一个磁头的tpi与cap。例:0f00表示硬盘的密度,0400表示硬盘的容量,以下字节代表不同磁头的tpi与cap。

基于上述分析,本发明提供的一种西数硬盘已使用固件区的数据擦除方法,包括以下步骤:

1)对西数硬盘已使用固件区进行擦除时,通过ata(advancedtechnologyattachment,硬盘接口技术)标准协议指令集和硬盘工厂自定义指令集可以实现对硬盘已使用固件区的数据进行擦除。

数据擦除方法:发送此硬盘对应得工厂key进入工厂模式,然后通过特有的命令将特定数据覆盖写入到对应固件区扇区。例如:wd硬盘的固件区有256个轨道,每个轨道大概有1000-2000个扇区,固件区总容量大概是一两百兆的样子,而大多数wd的硬盘有效固件只使用了几十兆的空间,也就是说固件区里面还有很多轨道是未使用的空闲状态;具体的,包括以下步骤:

1.1)发送工厂key(密钥)使硬盘进入工厂模式,进入工厂模式包括以下步骤:

①发送正确的工厂key(sata指令):0x80,开启访问固件模式;

②若发送失败,硬盘无法解锁固件模式,则返回“失败”;若发送成功,则直接进入步骤1.2);

1.2)用工厂自定义指令集读取目录模块。

①通过工厂自定义指令确定模块列表与模块id;

②再通过标准ata指令:ata8-acs标准:7.53.6smartreaddata-b0h/d0h,piodata-in读取01模块;

该标准api引用于:

7.53.6smartreaddata-b0h/d0h,piodata-in

7.53.6.1featureset

this28-bitcommandisoptionalfordevicesthatimplementthesmartfeatureset.

7.53.6.2description

thiscommandreturnsthedevicesmartdatastructuretothehost.

7.53.6.3inputs

1.3)根据读取的目录模块信息计算已使用固件区域并擦除。

①初始化区域表;

②对已经读取的目录模块进行遍历操作;

③计算已经使用的固件区域,并标记在区域表内;

④通过标准ata指令:ata8-acs标准:7.75writesector(s)ext-35h,piodata-out对区域表外数据进行擦除。

该标准api引用于:

7.75writesector(s)ext-34h,piodata-out

7.75.1featureset

this48-bitcommandismandatoryfordevicesthatimplementthe48-bitaddressfeatureset.

7.75.2description

thiscommandwritesfrom1to65,536logicalsectorsasspecifiedinthecountfield.

7.75.3inputs

2)对存在保留区的西数硬盘的进行擦除时,使用特殊命令将磁盘容量还原,然后使用标准api,从lba0~lbamax逐扇区覆盖写入特定数据。

具体的,包括以下步骤:

2.1)发送工厂key使硬盘进入工厂模式,进入工厂模式包括以下步骤:

①发送正确的工厂key(sata指令):0x80,开启访问固件模式;

②若发送失败,硬盘无法解锁固件模式,则返回“失败”,若发送成功,则直接进入步骤2.2)。

2.2)修改当前保留区的最大lba值,修改最大lba值包括以下步骤:

①判断当前保留区的最大lba是否大于阈值,如果大于阈值且控制命令类型为1,则返回错误,否则,进入步骤②。本发明中,阈值设置为268435454,这是由于保留区大小针对不同硬盘可能采用28bit/48bit两种寻址方式,其中28bit寻址值最大,在底层固定只占3.5个字节,最大值为0xfffffff,换算成10进制即0~268435454,如果超过这个值,说明错误。

②获取硬盘本身的最大lba值;

③当硬盘返回命令后,发送lba重置命令并且以ata方式写入硬盘。

使用ata8-acs标准:7.50setmaxaddressext-37h,non-data

该标准api引用于:

7.50setmaxaddressext-37h,non-data

7.50.1featureset

this48-bitcommandismandatoryfordevicesthatimplementboththehpafeaturesetandthe48-bitaddress

featureset.

7.50.2description

aftersuccessfulcommandcompletion,allreadandwriteaccessattemptstoanlbagreaterthanthelba

specifiedbythesuccessfulsetmaxaddressextcommandshallberejectedwithanidnotfounderror.

ahostshouldnotissuemorethanonenon-volatilesetmaxaddressextcommandafterapower-onorhardwarereset.

thecontentsofidentifydevicedataandthemaximumlbashallnotbechangedifasetmaxaddress

extcommandfails.

afterasuccessfulsetmaxaddressextcommandusinganewmaximumlbathecontentofallidentify

devicedatawordsshallcomplywith4.11.4.

asuccessfulreadnativemaxextcommandshouldimmediatelyprecedesetmaxaddressext.ifthe

devicereceivesasetmaxaddressextthatisnotimmediatelyprecededbyreadnativemaxext,the

deviceshallreportcommandaborted.

7.50.3inputs

7.50.3.1overview

2.3)对修改最大lba后的数据区(也即原有保留区),使用api填充数据区,具体包括以下步骤:

①向系统申请1048576字节大小的内存,其中,1048576换算成16进制为0x100000,这是一个经过优化的大小,每次读取此大小的内存;

②初始化申请的内存,即将1048576个字节的内存块清0;

③定义对象:偏移地址,并初始化为0;

④只当偏移地址小于最大lba值时做循环,最大lba值即为填充的用户区大小;

⑤调用写api函数:ata8-acs标准:7.75writesector(s)ext-35h,piodata-out,每次擦除1048576个字节,直到擦完数据区为止。

该api引用于:

7.75writesector(s)ext-34h,piodata-out

7.75.1featureset

this48-bitcommandismandatoryfordevicesthatimplementthe48-bitaddressfeatureset.

7.75.2description

thiscommandwritesfrom1to65,536logicalsectorsasspecifiedinthecountfield.

7.75.3inputs。

上述各实施例仅用于说明本发明,其中各部件的结构、连接方式和制作工艺等都是可以有所变化的,凡是在本发明技术方案的基础上进行的等同变换和改进,均不应排除在本发明的保护范围之外。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1