首页
社区
课程
招聘
NTFS中的USA和USN是什么意思
发表于: 2012-12-14 10:08 5895

NTFS中的USA和USN是什么意思

2012-12-14 10:08
5895
能够详细解释这两个数据的含义和用途吗?具体操作是如何的?

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 204
活跃值: (43)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
同上,我也想知道
2012-12-14 12:42
0
雪    币: 2120
活跃值: (73)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
USA: Update Sequence Array
USN: Update Sequence Number
用来检测数据完整性

可以用如下代码检测
static BOOL
	FixFileRecord(
	__inout PFILE_RECORD_HEADER FileRecord,
	__in DWORD WordsPerSector)
{
	PUSHORT USA = (PUSHORT)(PUCHAR(FileRecord) + FileRecord->Ntfs.UsaOffset);
	PUSHORT Sector = (PUSHORT)FileRecord;

	if (FileRecord->Ntfs.UsaCount > 4) 
		return FALSE;

	for (ULONG Index = 1; Index < FileRecord->Ntfs.UsaCount; ++Index)
	{
		if (Sector[WordsPerSector - 1] == USA[0])
		{
			Sector[WordsPerSector - 1] = USA[Index];
			Sector += WordsPerSector;
		}
		else
		{
			PRINT((TEXT("USA error at 0x%p\n"), Sector + WordsPerSector - 1));
			return FALSE;
		}
	}

	return TRUE;
}
2012-12-15 02:52
0
雪    币: 468
活跃值: (52)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
能够用文字说明吗,我们需要的是用文字说明其具体含义,然后再使用计算机语言来编程。
长篇大论,越详细越好。
2012-12-15 09:33
0
雪    币:
能力值: (RANK: )
在线值:
发帖
回帖
粉丝
5
简单的说, 就是写操作时把一个扇区的最后两个字节填上一个固定的数(USN), 这样就知道这个扇区是否被同步更新了, 而USN占用的位置上的原数据就按顺序存放在USA里.
读出时先验证USN, 然后再用USA的数据填回原来的位置上.
参看这个帖子(28楼有图): http://bbs.pediy.com/showthread.php?t=61171
2013-1-5 16:30
0
游客
登录 | 注册 方可回帖
返回
//