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

📄 ntfs文件系统启动扇区代码(简化版).shtm.htm

📁 支持FAT32和NTFS的引导扇区源码
💻 HTM
📖 第 1 页 / 共 5 页
字号:
        选择自 <a id="ArticleTitle1_ArticleTitle1_AuthorLink" href="http://dev.csdn.net/user/jackjoy">jackjoy</a> 的 Blog
    </td>
  </tr>
  <tr>
    <td align="center" bgcolor="#003399" height="16"><font color="#ffffff">关键字</font></td>
    <td width="500">&nbsp;
      <span id="ArticleTitle1_ArticleTitle1_lblKeywords">NTFS文件系统启动扇区代码(简化版)</span></td>
  </tr>
  <tr>
    <td align="center" bgcolor="#003399" height="16"><font color="#ffffff">出处</font></td>
    <td>&nbsp;
      <span id="ArticleTitle1_ArticleTitle1_lblSource"></span></td>
  </tr>
</tbody></table>
</td>
              </tr>
              <tr>
                <td width="10"></td>
                <td><span id="ArticleContent1_ArticleContent1_lblContent">;====================================================================<br>; <br>; FlyingDragon OS Boot Sector FOR NTFS File System<br>;<br>; Author: Jack<br>; V0.01 2005-9-1 20:58<br>; <br>; Build : nasm -f bin NTFS.ASM -oNTFS.BIN<br>; &nbsp;&nbsp; &nbsp;<br>;====================================================================================<br>; <br>; BIOS在启动中的角色:<br>; &nbsp;&nbsp; &nbsp;(1) BIOS装载引导驱动器上的0扇区(CHS = 0:0:1)内容到内存线性地址7C00H处;<br>; &nbsp;&nbsp; &nbsp;(2) BIOS检查所装载的扇区是否有启动标记(510、511字节分别为55H和AAH); <br>; &nbsp;&nbsp; &nbsp;(3) CPU寄存器DL被设置为分配给引导驱动器的驱动器号,00H为软驱A,80H为硬盘C;<br>; &nbsp;&nbsp; &nbsp;(4) BIOS跳转到其装载的扇区中的代码(即7C00H处),将控制权转交给引导代码。<br>; <br>; 引导代码应该初始化以下寄存器:<br>; &nbsp;&nbsp; &nbsp;(1) DS:某些BIOS设置其值为0,某些设置其为40H,它应该被设置为(7C00H-BOOT_ORG)/16;<br>; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;其中,BOOT_ORG为引导代码的ORG值,该值通常为7C00H(这意味着DS应设置为0);<br>; &nbsp;&nbsp; &nbsp;(2) SS和SP(堆栈):这两个寄存器的初始值依赖于BIOS;<br>; &nbsp;&nbsp; &nbsp;(3) CS个IP(通过JMP指令):大多数的BIOS进入启动代码的地址为0000:7C00H,但是某些<br>; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;BIOS却跳转到07C0:0000H。由于短跳转和条件跳转是IP相关的,因此如果没有使用<br>;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;远跳转或者绝对跳转,则不需要重置CS和IP;然而,DS仍旧必须是正确的值。<br>; <br>;=====================================================================================<br>; <br>; 常规内存( 0000 0000H - 000F FFFFH,即0-1MB )在系统启动时的使用情况<br>; <br>;=====================================================================================<br>; <br>; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;---------------------------------<br>;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;|&nbsp;&nbsp; &nbsp;0000 0000 -
0000 03FF&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;|&nbsp;&nbsp;
&nbsp;1024B &nbsp;&nbsp;&nbsp; &nbsp;IDT&nbsp; read only<br>; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;|-------------------------------|<br>;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;|&nbsp;&nbsp; &nbsp;0000 0400 -
0000 04FF&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;|&nbsp;&nbsp; &nbsp;256B
&nbsp;&nbsp; &nbsp;BIOS Data Area , read only&nbsp;&nbsp; &nbsp;<br>; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;|-------------------------------|<br>;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;|&nbsp;&nbsp; &nbsp;0000 0500 -
0000 7BFF&nbsp;&nbsp; &nbsp; &nbsp;&nbsp; &nbsp;|*&nbsp;&nbsp;
&nbsp;30464B&nbsp;&nbsp; &nbsp;Free Memory , read/write &nbsp;&nbsp;
&nbsp;(29.75KB) <br>; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;|------------------------------&nbsp;&nbsp; &nbsp;|<br>;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;|&nbsp;&nbsp; &nbsp;0000 7C00 -
0000 7DFF&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;|&nbsp;&nbsp;
&nbsp;512B&nbsp;&nbsp; &nbsp;Boot Sector , read/write&nbsp;&nbsp; &nbsp;<br>; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;|------------------------------&nbsp;&nbsp; &nbsp;|<br>;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;|&nbsp;&nbsp; &nbsp;0000 7E00 -
0000 7FFF&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;|&nbsp;&nbsp;
&nbsp;512B&nbsp;&nbsp;&nbsp; Free Memory , read /write<br>; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;|------------------------------&nbsp;&nbsp; &nbsp;|<br>;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;|&nbsp;&nbsp; &nbsp;0000 8000 -
0009 FBFF&nbsp;&nbsp; &nbsp; &nbsp;&nbsp; &nbsp;|&nbsp;&nbsp;
&nbsp;607KB&nbsp;&nbsp; &nbsp;Free Memory , read / write( 32K - 639KB )
<br>; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;|------------------------------&nbsp;&nbsp; &nbsp;|<br>;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;|&nbsp;&nbsp; &nbsp;0009 FC00 -
0009 FFFF&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;|**&nbsp;&nbsp;
&nbsp;1KB&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;EBDA extended BIOS data
area&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br>; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;|------------------------------&nbsp;&nbsp; &nbsp;|<br>;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;|&nbsp;&nbsp; &nbsp;000A 0000 -
000A FFFF&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;|&nbsp;&nbsp;
&nbsp;64KB&nbsp;&nbsp; &nbsp;Video Memory<br>; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;|------------------------------&nbsp;&nbsp; &nbsp;|<br>;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;|&nbsp;&nbsp; &nbsp;000B 0000 -
000B 7FFF&nbsp;&nbsp; &nbsp; &nbsp;&nbsp; &nbsp;|&nbsp;&nbsp;
&nbsp;32KB&nbsp;&nbsp; &nbsp;Mono Video Text Memory <br>; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;|------------------------------&nbsp;&nbsp; &nbsp;|<br>;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;|&nbsp;&nbsp; &nbsp;000B 8000 -
000B FFFF&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;|&nbsp;&nbsp;
&nbsp;32KB&nbsp;&nbsp; &nbsp;Color Video Text Memory<br>; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;|------------------------------&nbsp;&nbsp; &nbsp;|<br>;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;|&nbsp;&nbsp; &nbsp;000C 0000 -
000C 7FFF&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;|&nbsp;&nbsp;
&nbsp;32KB&nbsp;&nbsp; &nbsp;Video BIOS , read only<br>; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;|------------------------------&nbsp;&nbsp; &nbsp;|<br>;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;|&nbsp;&nbsp; &nbsp;000C 8000 -
000E FFFF&nbsp;&nbsp; &nbsp; &nbsp;&nbsp; &nbsp;|&nbsp;&nbsp;
&nbsp;160KB&nbsp;&nbsp; &nbsp;Adapter ROM,read only<br>; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;|------------------------------&nbsp;&nbsp; &nbsp;|<br>;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;|&nbsp;&nbsp; &nbsp;000F 0000 -
000F FFFF&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;|&nbsp;&nbsp;
&nbsp;64KB&nbsp;&nbsp; &nbsp;System BIOS, read only<br>; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;|------------------------------&nbsp;&nbsp; &nbsp;|<br>;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;|&nbsp;&nbsp; &nbsp;0010 0000 -
0010 FFEF&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;|***64KB-16&nbsp;&nbsp;
&nbsp;High Memory Area,read/write&nbsp; ( 1MB开始处 )<br>; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;|------------------------------&nbsp;&nbsp; &nbsp;|<br>;
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;|&nbsp;&nbsp; &nbsp;0010 FFF0 -
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;
&nbsp;|&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Free
Extended Memory, read/write&nbsp;&nbsp; &nbsp;<br>; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;|------------------------------&nbsp;&nbsp; &nbsp;|<br>; <br>; &nbsp;&nbsp; &nbsp;*&nbsp;&nbsp; &nbsp;空闲内存实际并非从 0000 0500处开始,BIOS数据区实际上会利用从0000 0500开始的少量字节,例如<br>; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;00000500处保存的是打印屏幕状态,当按下打印屏幕(PrintScreen)键时,低级键盘BIOS初始化打印屏<br>; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;幕功能,键盘BIOS触发中断5打印屏幕处理程序。正因为BIOS数据区越过了256B的界限,因此DOS实际<br>; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;上是从0000 0522开始装载的。为保险起见,可从0000 0600开始利用空闲内存。(1.5K - 31K 29.5KB)<br>; <br>; **&nbsp;&nbsp; &nbsp;有些机器上没有这段BIOS扩展数据区。<br>; <br>; ***&nbsp;&nbsp; &nbsp;如果没有使用扩展高端内存区域程序(例如Emm386.exe),则从0010 0000 (1MB )开始的内存都是可用的。<br>; <br>; <br>;=====================================================================================<br>; <br><br>BITS &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;16&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;; 生成16位代码而不是32位代码<br>SECTION&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;.TEXT &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;; 代码段<br>ORG&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;0800H&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;; 指定程序被装入内存的起始位置<br><br>;====================================================================<br>; <br>; NTFS启动扇区代码使用内存的情况:<br>;&nbsp;&nbsp; &nbsp;0000 0000 - 0000 07FF &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;2K&nbsp;&nbsp; IDT和BIOS数据<br>;&nbsp;&nbsp; &nbsp;0000 0800 - 0000 2800 &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;8K&nbsp;&nbsp; &nbsp; 保留给NTFS启动扇区代码,最多8K<br>;<br>;&nbsp;&nbsp;
&nbsp;****:**** - 0000 7FFF&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
&nbsp;22K&nbsp; 堆栈区域&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<br>;&nbsp;&nbsp; &nbsp;0000:8000 - ****:**** &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;480K 装载第二阶段程序FDOSLDR.BIN及数据的空间<br>;&nbsp;&nbsp; &nbsp;0008 0000 - 0008 FFFF&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;64K&nbsp; 用于文件系统的缓冲区 <br>;&nbsp;&nbsp; &nbsp;0009 0000 - 0009 FFFF&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;64K&nbsp; 用于读取数据簇的缓冲区<br>;<br>;====================================================================<br>; <br>; 宏和常量定义<br>; <br>;====================================================================<br>?
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
&nbsp;EQU &nbsp;&nbsp; &nbsp;0&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;;
NASM不支持DW ?这样的语法,可以使用这样的定义<br>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;;
模拟,以使代码的可读性更强<br>STACK_ADDR&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
&nbsp;EQU&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;7FD0H&nbsp;&nbsp;
&nbsp;; 堆栈栈顶(注意:堆栈大小约为20K左右)<br>DATA_BUF_SEG&nbsp;&nbsp; &nbsp;EQU&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;9000H&nbsp;&nbsp; &nbsp;; 用于读取根目录或文件内容的缓冲区(64K) 段地址<br>DATA_BUF_OFF&nbsp;&nbsp; &nbsp;EQU&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;0000H&nbsp;&nbsp; &nbsp;; 数据缓冲区偏移<br>DATA_BUF_ADDR&nbsp;&nbsp; &nbsp;EQU&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;90000H&nbsp;&nbsp; &nbsp;; 数据缓冲区线性地址<br>FILE_BUF_SEG&nbsp;&nbsp; &nbsp;EQU&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;8000H&nbsp;&nbsp; &nbsp;; 文件记录缓冲区段地址<br>FILE_BUF_OFF&nbsp;&nbsp; &nbsp;EQU&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;00000H&nbsp;&nbsp; &nbsp;; 文件记录缓冲区偏移<br>BOOT_SEC_NUM&nbsp;&nbsp;
&nbsp;EQU&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;16&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; &nbsp;; NTFS启动扇区代码的总长度(16个扇区=8K)<br>BOOT_SEC_ADDR&nbsp;&nbsp; &nbsp;EQU&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;0800H&nbsp;&nbsp; &nbsp;; NTFS启动扇区的重定位地址<br><br><br>; 第二阶段装载程序FDOSLDR.BIN<br>OSLOADER_ADDR&nbsp;&nbsp; &nbsp;EQU&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;8000H&nbsp;&nbsp; &nbsp;; FDOSLDR.BIN放入内存中的起始位置<br>OSLOADER_SEG&nbsp;&nbsp; &nbsp;EQU&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;0800H&nbsp;&nbsp; &nbsp;; 起始段地址<br><br><br>;====================================================================<br>; 用堆栈保存若干中间变量( SS = 0 BP = 7C00H )<br>;====================================================================<br>DISK_EXT_SUPPORT&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; &nbsp;EQU&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
&nbsp;1&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; ; BYTE&nbsp;&nbsp;
&nbsp;磁盘是否支持扩展BIOS&nbsp;&nbsp; &nbsp;<br>DRIVE_NUMBER&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;EQU&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; &nbsp;2&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;;
BYTE&nbsp;&nbsp; &nbsp;用于保存启动的磁盘驱动器号<br>BYTES_PER_FILE_RECORD&nbsp;&nbsp;
&nbsp;EQU&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;8&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; &nbsp;; DWORD&nbsp;&nbsp; &nbsp;用于保存NTFS每个文件记录的尺寸<br>BYTES_PER_INDEX_BLOCK&nbsp;&nbsp;
&nbsp;EQU&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;12&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; &nbsp;; DWORD&nbsp;&nbsp; &nbsp;用于保存默认的索引分配的尺寸<br>BYTES_PER_CLUSTER&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; &nbsp;EQU&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
&nbsp;16&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;; DWORD 用于保存每簇字节数字节数<br><br><br>;====================================================================&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<br>; 扩展磁盘服务所使用的地址包<br>;====================================================================<br>DAP_SECTOR_HIGH&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;EQU&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; &nbsp;24&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;;
起始扇区号的高32位 ( 每次调用需要重置 )&nbsp;&nbsp; &nbsp;DWORD<br>DAP_SECTOR_LOW&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;EQU&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; &nbsp;28&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;;
起始扇区号的低32位 ( 每次调用需要重置 )&nbsp;&nbsp; &nbsp;DWORD<br>DAP_BUFFER_SEG&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;EQU&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; &nbsp;30&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;;
缓冲区段地址&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; ( 每次调用需要重置 )&nbsp;&nbsp;
&nbsp;WORD<br>DAP_BUFFER_OFF&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; &nbsp;EQU&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
&nbsp;32&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;; 缓冲区偏移&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; &nbsp; ( 每次调用需要重置 )&nbsp;&nbsp;
&nbsp;WORD&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<br>DAP_RESERVED2&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;EQU&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; &nbsp;33&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;; 保留字节<br>DAP_READ_SECTORS&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; &nbsp;EQU&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
&nbsp;34&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;; 要处理的扇区数(1 - 127 )<br>DAP_RESERVED1&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;EQU&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; &nbsp;35&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;; 保留字节<br>DAP_PACKET_SIZE&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;EQU&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; &nbsp;36&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;;
包的大小为16字节<br><br>;====================================================================<br>; NTFS系统常量<br>;====================================================================<br><br>; 记录类型<br>NTFS_RECORD_TYPE_NONE&nbsp;&nbsp;
&nbsp;EQU&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;0&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;; 未知的类型<br>NTFS_RECORD_TYPE_FILE&nbsp;&nbsp; &nbsp;EQU&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;0x454C4946&nbsp;&nbsp; &nbsp;; 文件记录($MFT)<br>NTFS_RECORD_TYPE_INDX&nbsp;&nbsp;
&nbsp;EQU&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;0x58444E49&nbsp;&nbsp;
&nbsp;; 索引记录(Index Allocation)<br>NTFS_RECORD_TYPE_HOLE&nbsp;&nbsp; &nbsp;EQU&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;0x454C4F48&nbsp;&nbsp; &nbsp;; 空洞记录<br>NTFS_RECORD_TYPE_RSTR&nbsp;&nbsp;
&nbsp;EQU&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;0x52545352&nbsp;&nbsp;
&nbsp;; 重启记录($LogFile Restart Page )<br>NTFS_RECORD_TYPE_RCRD&nbsp;&nbsp;
&nbsp;EQU&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;0x44524352&nbsp;&nbsp;
&nbsp;; 日志记录($LogFile Log Record Page)<br>NTFS_RECORD_TYPE_CHKD&nbsp;&nbsp;
&nbsp;EQU&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;0x424B4843&nbsp;&nbsp;
&nbsp;; 检查记录($LogFile CHKDSK)<br>NTFS_RECORD_TYPE_BAAD&nbsp;&nbsp;
&nbsp;EQU&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;0x44414142&nbsp;&nbsp;
&nbsp;; 多扇区数据写入错误(通常是由于系统断电引起)<br>NTFS_RECORD_TYPE_FREE&nbsp;&nbsp; &nbsp;EQU&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;0xFFFFFFFF&nbsp;&nbsp; &nbsp;; 记录是空闲的,在使用前必须初始化<br><br>;=============================================================<br>; NTFS系统文件记录编号<br>;=============================================================<br>NTFS_SYSTEM_FILE_MFT&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; &nbsp;EQU&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
&nbsp;0&nbsp;&nbsp; &nbsp;; $MFT&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;(
Master File Table )<br>NTFS_SYSTEM_FILE_MFTMIRR&nbsp;&nbsp;
&nbsp;EQU&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;1&nbsp;&nbsp; &nbsp;;
$MFTMirr&nbsp;&nbsp; &nbsp;( 至少前四个MFT记录的拷贝)<br>NTFS_SYSTEM_FILE_LOGFILE&nbsp;&nbsp;
&nbsp;EQU&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;2&nbsp;&nbsp; &nbsp;;
$LogFile&nbsp;&nbsp; &nbsp;( 事务日志)&nbsp;&nbsp; &nbsp;<br>NTFS_SYSTEM_FILE_VOLUME&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; &nbsp;EQU&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
&nbsp;3&nbsp;&nbsp; &nbsp;; $Volume&nbsp;&nbsp; &nbsp;( 卷名及卷信息以及文件系统版本 )<br>NTFS_SYSTEM_FILE_ATTRDEF&nbsp;&nbsp;
&nbsp;EQU&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;4&nbsp;&nbsp; &nbsp;;
$AttrDef&nbsp;&nbsp; &nbsp;( 所有支持的属性定义 )<br>NTFS_SYSTEM_FILE_ROOT&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; &nbsp;EQU&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
&nbsp;5&nbsp;&nbsp; &nbsp;; .&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;(
根目录 )<br>NTFS_SYSTEM_FILE_BITMAP&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
&nbsp;EQU&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;6&nbsp;&nbsp; &nbsp;;
$Bitmap&nbsp;&nbsp; &nbsp;( 卷的数据簇分配位图 )<br>NTFS_SYSTEM_FILE_BOOT&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; &nbsp;EQU&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
&nbsp;7&nbsp;&nbsp; &nbsp;; $Boot&nbsp;&nbsp; &nbsp;( 卷的引导记录,指向引导扇区 )<br>NTFS_SYSTEM_FILE_BADCLUS&nbsp;&nbsp;
&nbsp;EQU&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;8&nbsp;&nbsp; &nbsp;;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -