ntfs_external_attr_find
2017-04-20 14:43:30 0 举报
ntfs_external_attr_find是一个用于在NTFS文件系统中查找外部属性的函数。它主要用于处理与文件相关的元数据,如作者、创建日期等。这个函数的主要作用是在给定的文件或目录中查找具有特定属性名的属性值。通过使用ntfs_external_attr_find,用户可以更方便地管理和操作NTFS文件系统中的文件和目录。 需要注意的是,ntfs_external_attr_find函数仅适用于NTFS文件系统,对于其他文件系统(如FAT32、exFAT等)可能无法正常工作。在使用此函数时,请确保您的操作系统支持NTFS文件系统,并正确安装了相应的驱动程序。
作者其他创作
大纲/内容
否
!ni
是
al_entry = next_al_entry
ctx-mrec = ctx-base_mrec;ctx-attr = (ATTR_RECORD*)((u8*)ctx-mrec +le16_to_cpu(ctx-mrec-attrs_offset));ctx-is_first = TRUE;ctx-ntfs_ino = ctx-base_ntfs_ino;ctx-base_ntfs_ino = NULL;ctx-base_mrec = NULL;ctx-base_attr = NULL;
next_al_entry = (ATTR_LIST_ENTRY*)((u8*)al_entry +le16_to_cpu(al_entry-length))
ni == base_ni
al_entry = ctx-al_entry;ctx-is_first = FALSE;
errno = EIO;
如果正在寻找AT_END,或者正在枚举并到达结束,重置搜索上下文@ctx并使用ntfs_attr_find寻求到底的mft记录。ype == AT_UNUSED || type == AT_END
超出检查。(u8*)al_entry attr_list ||(u8*)al_entry al_end
al_name_len
!al_entry-length
ni = ctx-ntfs_ino = base_ni;ctx-mrec = ctx-base_mrec;
MREF_LE(al_entry-mft_reference) == ni-mft_no
type == AT_END
第一次调用发生在基本mft记录。base_ni = ctx-base_ntfs_ino = ctx-ntfs_ino;ctx-base_mrec = ctx-mrec;
type != AT_UNUSED
(char*)a mrec || (char*)a (char*)ctx-mrec +le32_to_cpu(ctx-mrec-bytes_allocated)
!base_ni
al_entry-instance != a-instance
a = ctx-attr = (ATTR_RECORD*)((char*)ctx-mrec +le16_to_cpu(ctx-mrec-attrs_offset));
a-type == AT_END
抓住属性列表的结尾(u8*)al_entry == al_end
如果这是枚举和属性列表属性是枚举序列中的下一个,只是返回属性列表属性从基本的mft记录原样未列在属性列表本身。(type == AT_UNUSED) && le32_to_cpu(ctx-al_entry-type) type) le32_to_cpu(AT_ATTRIBUTE_LIST)
ni != base_ni
rc 0
ctx-ntfs_ino = base_ni;ctx-mrec = ctx-base_mrec;ctx-attr = ctx-base_attr;
!a-length
ctx-attr = a;
ctx-ntfs_ino = base_ni;ctx-mrec = ctx-base_mrec;ctx-is_first = TRUE;
是
start
ctx-base_attr = ctx-attr;
ni = ctx-ntfs_ino;base_ni = ctx-base_ntfs_ino;
le32_to_cpu(al_entry-type) le32_to_cpu(type)
type != al_entry-type
!rc
检查在其他地方执行。ctx-attr = (ATTR_RECORD*)((u8*)ctx-mrec +le16_to_cpu(ctx-mrec-attrs_offset));
ntfs_attr_reinit_search_ctx(ctx);
a = (ATTR_RECORD*)((char*)a + le32_to_cpu(a-length));
al_name_len = al_entry-name_length;al_name = (ntfschar*)((u8*)al_entry + al_entry-name_offset);
MREF_LE(al_entry-mft_reference) ==base_ni-mft_no)
errno != ENOENT
al_entry = (ATTR_LIST_ENTRY*)((char*)ctx-al_entry +le16_to_cpu(ctx-al_entry-length));
ctx-al_entry = al_entry;
(u8*)al_entry + 6 al_end || (u8*)al_entry +le16_to_cpu(al_entry-length) al_end
如果枚举和第一个属性高于属性列表本身,需要返回属性列表属性。(type == AT_UNUSED) && is_first_search &&le32_to_cpu(al_entry-type) le32_to_cpu(AT_ATTRIBUTE_LIST)
!ret
ctx-ntfs_ino = ni;ctx-mrec = ni-mrec;
al_entry-type != a-type
type == AT_UNUSED
end
vol = base_ni-vol;al_start = base_ni-attr_list;al_end = al_start + base_ni-attr_list_size;
MSEQNO_LE(al_entry-mft_reference) !=le16_to_cpu(ni-mrec-sequence_number
设置搜索上下文,以便下次返回正确的属性。ctx-al_entry = al_entry;ctx-is_first = TRUE;
\t或者如果 ctx- is_first为TRUE,则为该条目。ctx-is_first
ctx-al_entry = (ATTR_LIST_ENTRY*)al_start;is_first_search = TRUE;
!ctx-al_entry
name == AT_UNNAMED
收藏
收藏
0 条评论
下一页
为你推荐
查看更多