- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
NTFS是Windows NT引入的新型文档系统,他具备许多新特性。本文旨在探索NTFS的底层结构,所叙述的也仅是文档在NTFS卷上的分布。NTFS中,卷中任何存放的数据均在一个叫$MFT的文档中,叫主文档表(Master File Table)。而$MFT则由文档记录(File Record)数组构成。File Record的大小一般是固定的,通常情况下均为1KB,这个概念相当于Linux中的inode。File Record在$MFT文档中物理上是连续的,且从0开始编号。$MFT仅供File System本身组织、架构文档系统使用,这在NTFS中称为元数据(Metadata)。以下列出Windows 2000 Release出的NTFS的元数据文档(我将要给出的示例代码的部分输出结果)。
File Record(inode) FileName
0 $MFT
1 $MFTMirr
2 $LogFile
3 $Volume
4 $AttrDef
5 .
6 $Bitmap
7 $Boot
8 $BadClus
9 $Secure
10 $UpCase
11 $Extend
Windows 2000中不能使用dir命令(甚至加上/ah参数)像普通文档相同列出这些元数据文档。实际上File System Driver(ntfs.sys)维护了一个系统变量NtfsProtectSystemFiles用于隐藏这些元数据。默认情况下,这个变量被设为TRUE,所以使用dir /ah将得不到任何文档。知道这个行为后使用i386kd修改NtfsProtectSystemFiles后即能够列出元数据文档:
kd x ntfs!NtfsProtect*
fe213498 Ntfs!NtfsProtectSystemFiles
fe21349c Ntfs!NtfsProtectSystemAttributes
kd dd ntfs!NtfsProtectSystemFiles l 2
fe21349800000001
kd ed ntfs!NtfsProtectSystemFiles 0
kd dd ntfs!NtfsProtectSystemFiles l 2
fe21349800000001
kd
D:\ver
Microsoft Windows 2000 [Version 5.00.2195]
D:\dir /ah $*
驱动器 D 中的卷是 W2KNTFS
卷的序列号是 E831-9D04
D:\ 的目录
2000-04-27 19:31 36,000 $AttrDef
2000-04-27 19:31 0 $BadClus
2000-04-27 19:31 67,336 $Bitmap
2000-04-27 19:31 8,192 $Boot
2000-04-27 19:31 DIR $Extend
2000-04-27 19:31 13,139,968 $LogFile
2000-04-27 19:31 27,575,296 $MFT
2000-04-27 19:31 4,096 $MFTMirr
2000-04-27 19:31 131,072 $UpCase
2000-04-27 19:31 0 $Volume
9 个文档 40,961,960 字节
1 个目录 51,863,552 可用字节
需要指出的是ntfs.sys将元数据文档以一种特别的方式打开,所以在打开NtfsProtectSystemFiles后,假如使用ReadFile等产生IRP_MJ_READ等IRP包时将会导致Page Fault(详见Gary Nebbett的《Windows NT/2000 Native API Reference》)。
以上的讨论均是基于$MFT文档而讨论的??即基于$MFT中的File Record(inode)讨论的。为更好的继续以下的讨论,这儿我列出File Record Header的结构:
typedef struct {
ULONG Type;
USHORT UsaOffset;
USHORT UsaCount;
USN Usn;
} NTFS_RECORD_HEADER, *PNTFS_RECORD_HEADER;
typedef struct {
NTFS_RECORD_HEADER Ntfs;
USHORT SequenceNumber;
USHORT LinkCount;
USHORT AttributesOffset;
USHORT Flags; // 0x0001 = InUse, 0x0002 = Directory
ULONG BytesInUse;
UL
您可能关注的文档
最近下载
- 《城市轨道交通工程设计概算编制办法》(建标[2017]89号).pdf
- 建设工程技术支持方案(3篇).docx VIP
- 饲料企业生产成本控制.ppt VIP
- 首航加油加气站LNG加气项目职业病防护设施设计专篇资料性附件.pdf VIP
- 截渗墙工程施工方案(3篇).docx
- 数据资产入表全流程指南(92页 PPT).pptx VIP
- 新项目方法验证能力确认报告(固定污染源废气-烟气参数的测定HJT-397-2007).docx VIP
- 外国影视音乐 星球大战 课件高中音乐人音版(2019)必修 音乐鉴赏.pptx VIP
- 部编版八年级语文上册古诗文理解性默写练习.docx VIP
- 时间管理写ppt关于时间管理 内容.ppt VIP
原创力文档


文档评论(0)