1、USN_RECORD 单条USN记录结构信息结构
该USN记录,记录了磁盘上每一个文件或目录的相关信息,文件或目录名字可以通过 每条USN记录的指针位置、FileNameLength、FileNameOffset 三个值得出,为了后期版本的兼容性,最好不要直接使用FileName来获取。
typedef struct { DWORD RecordLength; //该条USN记录长度 WORD MajorVersion; //主版本 WORD MinorVersion; //次版本 DWORDLONG FileReferenceNumber; //文件引用数 DWORDLONG ParentFileReferenceNumber;//父文件引用数 USN Usn; //USN(一般为int64类型) LARGE_INTEGER TimeStamp; //时间戳 DWORD Reason; //原因 DWORD SourceInfo; //源信息 DWORD SecurityId; //安全 DWORD FileAttributes; //文件属性(文件或目录) WORD FileNameLength; //文件名长度 WORD FileNameOffset; //文件名偏移量 WCHAR FileName[1]; //文件名第一位的指针 } USN_RECORD, *PUSN_RECORD;
2、USN_JOURNAL_DATA USN日志信息结构
可以用来查询某个磁盘的USN日志信息。实际用于USN遍历,该结构中的NextUsn值被赋给MFT_ENUM_DATA结构中的HighUsn字段。
typedef struct { DWORDLONG UsnJournalID; //USN日志ID USN FirstUsn; //第一条USN记录的位置 USN NextUsn; //下一条USN记录将要写入的位置 USN LowestValidUsn; //最小的有效的USN(FistUSN小于该值) USN MaxUsn; //USN最大值 DWORDLONG MaximumSize; //USN日志最大大小(按Byte算) DWORDLONG AllocationDelta; //USN日志每次创建和释放的内存字节数 } USN_JOURNAL_DATA, *PUSN_JOURNAL_DATA;
3、MFT_ENUM_DATA 遍历USN记录时的结构
在枚举USN记录时,做为 DeviceIoControl() API函数的输入缓冲变量,每次枚举时要更改StartFileReferenceNumber值(其值为输出缓冲区的前8个字节的值,为整型数据)。
typedef struct { DWORDLONG StartFileReferenceNumber;//开始文件引用数,第一次调用必须为0 USN LowUsn; //最小USN,第一次调用,最好为0 USN HighUsn;//最大USN } MFT_ENUM_DATA, *PMFT_ENUM_DATA;
4、READ_USN_JOURNAL_DATA 获取USN日志变更的结构
USN日志变更信息,在磁盘文件或目录变化时,用来枚举这些变化的USN记录
typedef struct { USN StartUsn;//变更的USN记录开始位置,即第一次读取USN日志的LastUsn值。 DWORD ReasonMask; //原因标识 DWORD ReturnOnlyOnClose; //只有在记录关闭时才返回 DWORDLONG Timeout; //延迟时间 DWORDLONG BytesToWaitFor;//当USN日志大小大于该值时返回 DWORDLONG UsnJournalID; //USN日志ID } READ_USN_JOURNAL_DATA, *PREAD_USN_JOURNAL_DATA;
5、CREATE_USN_JOURNAL_DATA 创建USN日志的结构
用于创建USN日志
typedef struct { DWORDLONG MaximumSize;//NTFS文件系统分配给USN日志的最大大小(字节) DWORDLONG AllocationDelta; //USN日志每次创建和释放的内存字节数 } CREATE_USN_JOURNAL_DATA, *PCREATE_USN_JOURNAL_DATA;
6、DELETE_USN_JOURNAL_DATA 删除USN日志的结构
用于删除USN日志
typedef struct { DWORDLONG UsnJournalID;//USN日志ID DWORD DeleteFlags; //删除标志 } DELETE_USN_JOURNAL_DATA, *PDELETE_USN_JOURNAL_DATA;
时间: 2024-10-21 11:20:23