




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
硬盘分区结构及windows文件系统结构详细解析硬盘分区信息参数定义2006年10月17日 星期二 11:26/x50210/blog/item/6bf209d180c0c8d3572c8444.html1.关于硬盘分区:IDE接口硬盘中,不管什么操作系统,都有如下结构:MBR(Master Boot Record)及基本分区表分区1分区2.分区nMBR和基本分区表共用硬盘的第一个扇区(即0面0道1扇区,以后简称第一扇区MBR),分区表位于扇区的最后66字节,除了最后的2字节55AA外,为4条分区记录,每条分区记录16字节。 各字段含义如下: 偏移意义0自举标志(80为活动分区,00为非活动分区)1起始磁头号H2起始扇区号S3起始柱面号CYL(CYL的高2位存放在S字节的高2位)4分区格式标志(见下表)5终止磁头号H6终止扇区号S7终止柱面号CYL8-11本分区之前已用扇区数(当分区表属于扩展分区中的记录时,该值为相对扩展分区首地址的位置)12-15本分区扇区总数(注意:C/H/S的编址从0/0/1开始)分区格式标志意义01fat1205extended06fat1607hpfs/ntfs0b,0dwin95 fat320ewin95 fat1682linux swap83linux85linux extended可以看出,使用C/H/S三维地址时,磁盘的寻址空间最多只有224个扇区,即8GB的容量,当磁盘容量大于8GB时,C/H/S就无法寻址了。于是采用LBA(logic block address)线性地址来寻址(即08-0F字节标注扇区数)。在LBA方式下系统把所有的物理扇区都按某种方式或规则看做是一线性编号的扇区,即从0到某个最大值方式排列。(按此方法容易知道,磁盘寻址空间最大为2TB,或需转换成GPT)C/H/S到LBA: LBA=(C-c)*PH*PS+(H-h)*PS+(S-s)一般情况下c=0,h=0,s=1,PS=63,PH=255,PS表示每磁道多少扇区,PH表示每柱面多少磁道。(也有PH=240的)LBA到C/H/S: C=LBA/(PH*PS)+c H=(LBA/PS)MOD PH +h S=LBA MOD PS + s 由于MBR只能记录4个分区的信息,windows通过扩展分区来记录多于4个分区的记录,称做虚拟MBR。做法是:让主MBR在定义分区时,将多余容量定义为扩展分区,指定该分区的起始位置,根据起始位置指向硬盘的某一扇区,作为下一个分区表,在该扇区继续定义分区。如果只有一个分区,就定义该分区,然后结束;如果不止一个分区,就定义一个基本分区和一个扩展分区,扩展分区再指向下一个分区表,在下一个分区表中继续定义分区,直至结束。这样就形成一个分区链,可以描述所有的分区。 一个分区表的例子: +00+01+02+03+04+05+06+07+08+09+0A+0B+0C+0D+0E+0FMBR1B080011C001000CFEFFFF3F000000FC8A380100001D0C1FF83FEFFFF3B8B38016E9AF60000001E0C1FF82FEFFFFA9252F02E116080000001F0C1FF0FFEFFFF8A3C37026243530755AAEXT-1+1B00001+1C0C1FF0BFEFFFF3F000000371671020000+1D0C1FF05FEFFFF761671023B8B38010000+1E000000000000000000000000000000000+1F0000000000000000000000000000055AAEXT-2+1B00001+1C0C1FF0BFEFFFF3F000000FC8A38010000+1D0C1FF05FEFFFFB1A1A9032CD5FB020000+1E000000000000000000000000000000000+1F0000000000000000000000000000055AAEXT-3+1B00001+1C0C1FF0BFEFFFF3F000000EDD4FB020000+1D0C1FF05FEFFFFDD76A5063E15AC000000+1E000000000000000000000000000000000+1F0000000000000000000000000000055AAEXT-4+1B00001+1C0C1FF0BFEFFFF3F000000FF14AC000000+1D0C1FF05FEFFFF1B8C510747B701000000+1E000000000000000000000000000000000+1F0000000000000000000000000000055AAEXT-5+1B00001+1C0C1FF07FEFFFF3F00000008B701000000+1D000000000000000000000000000000000+1E000000000000000000000000000000000+1F0000000000000000000000000000055AA(注意:系统在启动时按照分区链的顺序查找分区,直到找出所有分区,如果分区链形成一个环,就形成所谓硬盘逻辑锁,导致系统无法启动,软盘也无法启动。由于 windows启动过程在io.sys中决定的,可以查找io.sys,将第一个55AA改成其他数值,程序还没开始查找分区表就结束,就避开了对分区表的检测) - 2.关于INT 132.1通过int 13来读取物理扇区的例子:a100mov ax,201mov bx,200mov cx,1mov dx,80int 13int 3g=100参数解释: al:读写扇区数 bx:缓冲区地址 dh:磁头号 dl:设备号(A盘是0,B是1,第一硬盘是80,第二硬盘是81) ch:柱面号低8位 cl:低6位为要读的起始扇区号,高2位为柱面号的高2位。2.2扩展INT 13:数据类型约定:BYTE1字节整型(8 位) WORD2字节整型(16 位) DWORD4字节整型(32 位) QWORD8字节整型(64 位)磁盘地址数据包 Disk Address Packet (DAP): DAP 是基于绝对扇区地址的, 因此利用 DAP, Int13H 可以轻松地逾越 1024 柱面的限制, 因为它根本就不需要 CHS 的概念. DAP 的结构如下: struct DiskAddressPacket BYTE PacketSize; / 数据包尺寸(16字节) BYTE Reserved; / =0 WORD BlockCount; / 要传输的数据块个数(以扇区为单位) DWORD BufferAddr; / 传输缓冲地址(segment:offset,在内存中为offset在低地址如166b:400在内存中为:00 04 6b 16) QWORD BlockNum; / 磁盘起始绝对块地址(即LBA地址) ;驱动器参数数据包 Drive Parameters Packet: 驱动器参数数据包是在扩展 Int13H 的取得驱动器参数子功能调用中使用的数据包. 格式如下: struct DriveParametersPacket WORD InfoSize; / 数据包尺寸 (26 字节) WORD Flags; / 信息标志 DWORD Cylinders; / 磁盘柱面数 DWORD Heads; / 磁盘磁头数 DWORD SectorsPerTrack; / 每磁道扇区数 QWORD Sectors; / 磁盘总扇区数 WORD SectorSize; / 扇区尺寸 (以字节为单位) ;2.2.1) 检验扩展功能是否存在 入口: AH = 41h BX = 55AAh DL = 驱动器号 返回: CF = 0 AH = 扩展功能的主版本号 AL = 内部使用 BX = AA55h CX = API 子集支持位图 CF = 1 AH = 错误码 01h, 无效命令 这个调用检验对特定的驱动器是否存在扩展功能.如果进位标志置 1 则此驱动器不支持扩展功能. 如果进位标志为 0, 同时 BX = AA55h, 则 存在扩展功能. 此时 CX 的 0 位表示是否支持第一个子集,1位表示是否 支持第二个子集. 对于 1.x 版的扩展 Int13H 来说, 主版本号 AH = 1. AL是副版本号, 但这仅限于 BIOS 内部使用, 任何软件不得检查 AL 的值. 2.2.2) 扩展读 入口: AH = 42h DL = 驱动器号 DS:SI = 磁盘地址数据包(Disk Address Packet) 返回: CF = 0, AH = 0 成功 CF = 1, AH = 错误码 这个调用将磁盘上的数据读入内存. 如果出现错误, DAP 的BlockCount 项中则记录了出错前实际读取的数据块个数. 2.2.3) 扩展写 入口: AH = 43h AL 0 位 = 0 关闭写校验 1 打开写校验 1 - 7 位保留, 置 0 DL = 驱动器号 DS:SI = 磁盘地址数据包(DAP) 返回: CF = 0, AH = 0 成功 CF = 1, AH = 错误码 这个调用将内存中的数据写入磁盘. 如果打开了写校验选项,但 BIOS 不支持, 则会返回错误码 AH = 01h, CF = 1. 功能 48h可以检测BIOS是否 支持写校验. 如果出现错误, DAP 的 BlockCount项中则记录了出错前实际写入的数 据块个数. 2.2.4) 校验扇区 入口: AH = 44h DL = 驱动器号 DS:SI = 磁盘地址数据包(Disk Address Packet) 返回: CF = 0, AH = 0 成功 CF = 1, AH = 错误码 这个调用校验磁盘数据,但并不将数据读入内存.如果出现错误, DAP 的 BlockCount 项中则记录了出错前实际校验的数据块个数. 2.2.5) 锁定/解锁驱动器 入口: AH = 45h AL = 0 锁定驱动器 = 1 驱动器解锁 = 02 返回锁定/解锁状态 = 03h-FFh - 保留 DL = 驱动器号 返回: CF = 0, AH = 0 成功 CF = 1, AH = 错误码 这个调用用来缩定指定驱动器中的介质. 所有标号大于等于 0x80 的可移动驱动器必须支持这个功能.如果 在支持可移动驱动器控制功能子集的固定驱动器上使用这个功能调用,将 会成功返回. 驱动器必须支持最大255次锁定, 在所有锁定被解锁之前,不能在物理上 将驱动器解锁. 解锁一个未锁定的驱动器,将返回错误码 AH= B0h.如果锁定一 个已锁定了255次的驱动器, 将返回错误码 AH = B4h. 锁定一个没有介质的驱动器是合法的. 2.2.6) 弹出可移动驱动器中的介质 入口: AH = 46h AL = 0 保留 DL = 驱动器号 返回: CF = 0, AH = 0 成功 CF = 1, AH = 错误码 这个调用用来弹出指定的可移动驱动器中的介质. 所有标号大于等于 0x80 的可移动驱动器必须支持这个功能.如果 在支持可移动驱动器控制功能子集的固定驱动器上使用这个功能调用,将 会返回错误码 AH = B2h (介质不可移动).如果试图弹出一个被锁定的介质 将返回错误码 AH = B1h (介质被锁定). 如果试图弹出一个没有介质的驱动器, 则返回错误码 Ah =31h (驱动器 中没有介质). 如果试图弹出一个未锁定的可移动驱动器中的介质,Int13h会调用 Int15h (AH = 52h) 来检查弹出请求能否执行.如果弹出请求被拒绝则返回错误码(同 Int15h). 如果弹出请求被接受,但出现了其他错误, 则返回错误码 AH =B5h. 2.2.7) 扩展定位 入口: AH = 47h DL = 驱动器号 DS:SI = 磁盘地址数据包(Disk Address Packet) 返回: CF = 0, AH = 0 成功 CF = 1, AH = 错误码 这个调用将磁头定位到指定扇区. 2.2.8) 取得驱动器参数 入口: AH = 48h DL = 驱动器号 DS:SI = 返回数据缓冲区地址 返回: CF = 0, AH = 0 成功 DS:SI 驱动器参数数据包地址,(参见前面的文章) CF = 1, AH = 错误码 这个调用返回指定驱动器的参数. 2.2.9) 取得扩展驱动器介质更换检测线状态 入口: AH = 49h DL = 驱动器号 返回: CF = 0, AH = 0介质未更换 CF = 1, AH = 06h 介质可能已更换 这个调用返回指定驱动器的介质更换状态. 这个调用与 Int13h AH = 16h 子功能调用相同,只是允许任何驱动器 标号.如果对一台支持可移动介质功能子集的固定驱动器使用此功能,则永远 返回 CF = 0, AH = 0. 简单地将可移动介质锁定再解锁就可以激活检测线,而无须真正更换介质. 2.2.10) Int 15h 可移动介质弹出支持 入口: AH = 52h DL = 驱动器号 返回: CF = 0, AH = 0 弹出请求可能可以执行 CF = 1, AH = 错误码 B1h 或 B3h 弹出请求不能执行 这个调用是由 Int13h AH=46h弹出介质功能调用内部使用的(注:MBR的分区表中,8-11字节本分区之前已用扇区数,即该分区首扇区的LBA地址。通过扩展int 13即可访问磁盘的任意扇区)- 硬盘分区结构及windows文件系统结构- -2/9889/blog/item/2851413441cf244e241f1470.html2006年08月18日 星期五 12:333.FAT文件系统的结构: 3.1 FAT12,FAT16: DBR-FAT1-FAT2-DFT-DATA DBR只占1个扇区,DFT为根目录表,根目录下的DIR项数固定,一般为512项,每项占32字节,即DIR占32个扇区 则一个文件的逻辑扇区号: 逻辑扇区号=1+2*FAT占用的扇区数+DIR占用的扇区数+(起始簇号-2)*每簇扇区数3.2FAT32: DBR和其后的保留扇区-FAT1-FAT2-DATA 在DBR使用3个扇区,实际只使用第1个扇区,2,3扇区也写入55AA标志,之后有保留扇区,一般为20h或21h,其中第6扇区是DBR的备份。同时DIR当作文件处理,不在固定位置,也没有固定大小 则文件的逻辑扇区号: 逻辑扇区号=保留扇区数+2*FAT占用扇区数+(起始簇号-2)*每簇扇区数此时因为DIR不固定,要在BPB中读出DIR的入口簇。 对于一个确定的分区,可通过逻辑地址来访问该分区中的扇区。逻辑地址从0开始。 在98和dos下可用debug的L命令来访问: L address drive firstsector number 读逻辑盘的扇区,扇区号为逻辑地址,0为DBR即BOOT区 drive按A,B,C,D排序,对应0,1,2,3. 对应W命令: W address drive firstsector number W若不带参数,或只有地址参数,则按BX:CX寄存器指出的字节,从内 存向磁盘写入数据。此时的文件名是此命令前最后一个使用过的文件名 ,或者是N命令中指定的文件,如果没有使用过N命令,则使用Debug命 令行中指定的文件。DBR(dos boot record)操作系统可访问的第一个扇区。包括一个引导程序和BPB(bios parameter block)的本分区参数记录表。 FAT(file allocation table)fat中的记录和磁盘上的簇对应。FAT2为FAT1的备份。FAT的格式有多种,其中FAT16是指文件分配表使用16位表示一个簇,FAT12,FAT32同理。可知FAT16最多能管理65536个簇,而每簇最大32kb,所以FAT16每个分区最大2GB。 (注:FAT的0,1簇保留,0字节表示磁盘类型,簇号从2开始。) DFT(文件目录表)根目录区,只存在FAT12和FAT16中,紧跟在FAT2后。根目录下的文件和子目录在DFT中都有一个目录登记项每个项占32字节,项数在BPB中说明。FAT32中DFT无固定位置,把DFT当作一个普通文件处理,在BPB中指出DFT首簇地址。 长文件名规则: 目录项保存该文件的短文件名,长文件名用若干个长文件名目录向保存,长文件名目录项倒序排列在文件短目录项前面,采用双字节unicode内码保存,每项最多13个内码,首字节是顺序字节,指明是长文件名的第几项,11字节为0F,12字节指明类型,13字节为校验和,26,27字节为0。 - 3.3 FAT文件系统的的一些参数: 3.3.1 FAT16的BPB: 偏移长度说明003JMP指令;跳转到引导程序。后随一个空操作。(不属BPB)038OEM标志(FAT16为MSWIN4.0)0B2每扇区字节数0D1每簇扇区数0E2dos保留扇区数101FAT数112根目录项数,如512132扇区数(小于32M的分区)151介质描述符162每FAT扇区数182每磁道扇区数(逻辑参数)1A2磁头数(逻辑参数1C4隐含扇区(即分区表中的8-11字节本分区之前已用扇区数)*204扇区数(即分区表中的12-15字节)241BIOS设备号(hex:HD=8x)251未使用261扩展引导标记274卷序列号(随机)2B11卷标,分区标识,如:WIN98368文件系统格式:FAT163.3.2 FAT32的BPB: 偏移长度说明003JMP指令038OEM标志(FAT32为MSWIN4.1)0B2每字节扇区数0D1每簇扇区数0E2dos保留扇区数,FAT32中一般是32101FAT数112根目录项数,一般为0,未使用132扇区数(小于32M的分区,FAT32中不再使用)151介质描述符162每FAT扇区数(FAT32下不用)182每磁道扇区数(逻辑参数)1A2磁头数(逻辑参数)1C4隐含扇区(即分区表中的8-11字节本分区之前已用扇区数)*204扇区数(即分区表中的12-15字节)244每FAT扇区数282标记2A2版本2C4根目录首簇地址302DBR占用的扇区数322备份DBR地址3412保留401BIOS设备号(hex:HD=8x)411未使用421扩展引导标记434卷序列号(随机)4711卷标,分区标识,如:WIN2000528文件系统格式:FAT323.3.3 磁介质描述符: 十六进制说明F8硬盘F9双面5in软盘(15扇区高密度)双面3in软盘FA双面3in RAM虚拟盘FC单面5in软盘(9扇区高密度) 双面8in盘FD双面5in盘(9扇区低密度)FE单面8in盘(单、双密度)单面5in盘(8扇区低密度)FF双面5in盘(8扇区低密)3.3.4 FAT中每个簇号可取的表项值及含义: 表项值(12位)表项值(16位)表项值(32位)簇描述含义000H 0000H00000000H未使用的簇002H-FEFH0002H-FFEFH00000002H-FFFFFFEFH已分配的簇(可见簇号从2开始)FF0H-FF6H FFF0H-FFF6HFFFFFFF0H-FFFFFFF6H保留FF7HFFF7HFFFFFFF7H坏簇FF8H-FFFHFFF8H-FFFFHFFFFFFF8H-FFFFFFFFH文件结束簇3.3.5 FAT16的FDT字段含义: 偏移长度说明0-78文件名8-103扩展名111属性字节(00000000读写,00000001只读,00000010隐藏,00000100系统,00001000卷标,00010000子目录,00100000档案)12-2110保留未用22-232文件创建时间(hhhhh mmmmmm sssss)24-252文件创建时间(yyyyyyy mmmm ddddd)26-272表示文件的首簇号28-314文件长度3.3.6 FAT32的FDT字段含义: 偏移长度说明0-78文件名8-103扩展名111属性字节(同FAT16,但为0FH时,表示该项为长文件名记录项)12-132种类、校验和13-153文件创建时间(hhhhh mmmmmm sssss,后8位为毫秒数)16-172文件创建时间(yyyyyyy mmmm ddddd)18-192最新访问日期,定义同16-1720-212起始簇的高16位22-232最新修改时间(hhhhh mmmmmm sssss)24-252最新修改日期,定义同16-1726-272起始簇的低16位28-314文件长度通过以上信息,经过debug的L命令即可读出FAT系统中任意文件的内容。 - 4.NTFS文件系统的结构: 分区引导扇区MFT(主文件表)系统文件文件区域 在NTFS中,磁盘上的任何事物都为文件。 文件通过MFT来确定其在磁盘上的存储位置。主文件表是一个与文件相对应的数据库,由一系列文件记录组成卷中每个文件都有一个文件记录(对于大型文件可能有多个记录与之对应)。主文件表自身也有它自己的记录。MFT的文件记录大小一般是固定的,不管簇的大小是多少,均为1k。MFT仅供系统本身组织架构文件系统使用,被称为元数据,不能被应用程序访问。其中最基本的前16个记录是操作系统使用的非常重要的元数据文件。这些文件都以$开始,是隐藏文件,不能用dir命令列出。不过有个工具nfi.exe可以转储重要的元数据文件。 NTFS使用逻辑簇号LCN和虚拟簇号VCN来对簇进行定位。LCN是对整个卷从头到尾的编号,相当于FAT系统的逻辑簇号。VCN是对特定文件的簇从头到尾进行编号。VCN可以映射成LCN。 - NTFS把磁盘分成两大部分,大约12%分配给MFT,余下的用来存储文件。 NTFS通过MFT访问卷的过程如下: li首先必须装载该卷查看引导文件($Boot元数据文件),找到MFT的物理地址;/lili然后从文件记录的数据属性中获得VCN到LCN的映射信息,并存储在内存中。这个映射信息定位了MFT的运行(run或extent,见常驻属性与非常驻属性)在磁盘上的位置;/lili接着再打开几个元数据文件的MFT记录,并打开这些文件。此后,用户就可以访问该卷了。/liNTFS 将文件作为属性/属性值的集合来处理。文件数据就是未命名属性的值。一个文件通常占用一个文件记录。但当一个文件具有很多项属性值或很零碎的时候,就可能需要占用一个以上的文件记录。这种情况下,第一个文件记录是其基本的文件记录,存储有该文件需要的其他文件记录的位置。小文件和文件夹将全部存储在文件的MFT记录里。 NTFS的文件夹只是一个简单的文件名和文件引用号的索引,如果目录列表小于一个记录的长度,那么,该文件夹的所有信息都存储在主文件表的记录中。对于大于记录的文件夹则使用B+树进行管理,并用一个指针指向一个外部簇,该簇用来存储那些MFT内存储不了的文件夹的属性。 - 当一个文件很小时,其所有属性和属性值都可以存放在MFT的文件记录中。当属性值能直接存放在MFT中时,该属性就称为常驻属性(resident attribute)。有些属性总是常驻的,这样NTFS才可以确定其他非常驻属性。 大文件或大目录的所有属性,就不可能常驻在MFT中。如果一个属性太大而不能存放在只有1KB大小的MFT文件记录中,那么NTFS将从MFT之外为之分配区域。这些区域通常称为一个运行(run)或一个盘区(extent),它们可用来存储属性值,如文件数据。如果以后属性值又增加,那么,NTFS将回再分配一个运行,以便用来存储额外的数据。值存储在运行中而不是在MFT文件记录中的属性称为非常驻属性。 在标准属性中,只有可以增长的属性才是非常驻的。对文件来说,可增长属性有数据、属性列表等。 - 4.1 NTFS的BPB: 偏移长度说明003JMP指令038OEM标志0B2每扇区字节数0D1每簇扇区数0E2保留扇区103总为0132NTFS未使用,总为0151介质描述162总为0182每磁道扇区数1A2磁头数1C4隐含扇区204NTFS未使用,总为0244NTFS未使用,总为0288扇区总数308$MFT的逻辑簇号383$MFTMirr的逻辑簇号404每MFT记录簇数444每索引簇数488卷标504校验和4.2 NTFS元文件: 序号元文件功能0$MFT主文件表本身1$MFTMirr主文件表的部分镜像(内容就是前16个文件记录)2$LogFile日志文件3$Volume卷文件4$AttrDef属性定义列表5$Root根目录6$Bitmap位图文件7$Boot引导文件8$BadClus坏簇文件9$Se
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 玻璃釉印工设备维护与保养考核试卷及答案
- 烟叶调制员技能操作考核试卷及答案
- 苯乙烯装置操作工技能巩固考核试卷及答案
- 聚偏氟乙烯装置操作工专业技能考核试卷及答案
- 丁基橡胶装置操作工成本预算考核试卷及答案
- 2025-2026学年北师大版数学九年级上册第一次月考押题试卷含解析
- 医学技术喷雾酒精考试题及答案
- 服务心理学(第四版)课件 项目十一 任务一 提高服务业团队管理技巧提高服务业团队管理技巧
- 班组建设与电力安全知识测试卷
- 提升学习质量行动方案范文
- 黄芪注射液联合当归注射液对急性失血性休克围手术期血乳酸水平和氧代谢的影响
- 网络与信息安全事件报告表模板
- 2023年上海市选调生考试《申论》题库【真题精选+章节题库+模拟试题】
- 中学安全事故问责制度(试行)
- 港口航道疏浚工程案例
- DLT-969-2023年变电站运行导则
- 现代铁路铁道信号远程控制系统(第2版)PPT完整全套教学课件
- 通知证人出庭申请书
- 3、反渗透法设备安装及调试施工工艺工法要点
- 高压开关柜技术规范书
- 污染源自动监测设备比对监测技术规定
评论
0/150
提交评论