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

📄 logfile.html

📁 中文的NTFS文件系统结构说明文档
💻 HTML
📖 第 1 页 / 共 2 页
字号:
                                       
            __u16 client_free_list;     多少客户是空闲的(?)如果 != 0xffff,
                                        检查log_clients > client_free_list.
                                        = 0xffff
                                        
            __u16 client_in_use_list;   多少客户在用(?)如果 != 0xffff
                                        检查log_clients > client_in_use_list.
                                        = 0
                                        
            __u16 flags;                ??? = 0
            
            __u32 seq_number_bits;      ??? = 0x2c or 0x2d
            
            __u16 restart_area_length;  重新启动区的长度。如果版本匹配需要进一步检查。
                                        否则就略过。restart_offset +restart_area_length
                                        必须 <= system_page_size. 而且restart_area_length
                                        必须 >= client_array_offset +(log_clients * 0xa0)
                                        = 0xd0
                                        
            __u16 client_array_offset;  在版本匹配的情况下从此记录开始到第一个客户记录的
                                        偏移量。否则此偏移量假定为(sizeof(RESTART_AREA) + 7) & ~7
                                        例如,上舍入第一个8比特边界。
                                        用任一种方法到客户队列的偏移量都必须排列为一个8比
                                        特边界。同样,重新启动页的偏移量+到客户队列的偏移量
                                        必须<= 510. 到客户队列的偏移量+(log_clients * 0xa0) 
                                        必须<= SystemPageSize
                                        = 0x30
                                        
            __u64 file_size;            日志文件的比特大小。如果
                                        重新启动的偏移量+文件大小的偏移量>510
                                        就会出错。当以重新启动区开始的时候这是最初的一个检
                                        查,看起来好像是失败了,其实这仅仅意味着上述一些数
                                        值将被多部转移保护所破坏。
                                        如果这个结构被解除保护那么这些检查将是无效过程。
                                        计算此文件大小的位数并检查
                                        seq_number_bits == 0x43 - file_size bits 
                                        = 0x400000
                                        
            __u32 last_lsn_data_length; ??? = 0, 0x40
            
            __u16 record_length;        此记录的字节大小。如果版本匹配,
                                        此记录长度的值是8的倍数,例如:
                                        (record_length + 7) & ~7 == record_length.
                                        = 0x30
                                        
            __u16 log_page_data_offset; ??? = 0x40
            
    }  RESTART_AREA;

    日志文件客户记录。起始于0x58即使有上述意外发生它也会在0x60开始. /-:
    
    struct {
            __u64 oldest_lsn;           此客户记录的最古老日志文件的序列号
                                        = 0xbd16951d
                                     
            __u64 client_restart_lsn;   ??? = 0x700000, 0x700827, 0x700d07
            
            __u16 prev_client;          ??? = 0x808, 0xd07, 0xd5d
            
            __u16 next_client;          ??? = 0x70
            
            __u16 seq_number;           ??? = 0, 4 大小不确定。称为“卷清除标记”,大小为一个字节。
            
            __u16 client_name;          ??? = 空字串??? 大小不确定
                        
    }  RESTART_CLIENT;

    注意:上述客户记录是在0xffffffff之后的,可能指示重新启动区的结尾。
    
    那么这有8字节=0,one __u32 = 8,然后是标准编码字串“NTFS”,然后调零直至页尾?
        
    日志页记录页标题。每一个日志页以标题开始,然后是几个日志记录结构。
        
    struct {
            NTFS_RECORD;                        幻数"RCRD".
            union {
                    __u64 last_lsn;
                    __u32 file_offset;
            }  copy;
            __u32 flags;
            __u16 page_count;
            __u16 page_position;
            union {
                    struct {
                            __u64 next_record_offset;
                            __u64 last_end_lsn;
                    }  packed;
            }  header;
    }  RECORD_PAGE_HEADER;

    日志记录可能有的标记
        
    enum {
            LOG_RECORD_MULTI_PAGE = 1,        ???
            LOG_RECORD_SIZE_PLACE_HOLDER = 0xffff,
                           无法使用日志记录,gcc此标记为16比特
    }  LOG_RECORD_FLAGS;

    日志记录头
        
    struct {
            __u64 this_lsn;
            __u64 client_previous_lsn;
            __u64 client_undo_next_lsn;
            __u32 client_data_length;
            struct {
                    __u16 seq_number;
                    __u16 client_index;
            }  client_id;
            __u32 record_type;
            __u32 transaction_id;
            LOG_RECORD_FLAGS flags;
            __u16 reserved_or_alignment[3];
    现在在结构中的偏移量为0x30
            __u16 redo_operation;
            __u16 undo_operation;
            __u16 redo_offset;
            __u16 redo_length;
            __u16 undo_offset;
            __u16 undo_length;
            __u16 target_attribute;
            __u16 lcns_to_follow;              Number of lcn_list entries following this entry.
            __u16 record_offset;
            __u16 attribute_offset;
            __u32 alignment_or_reserved;
            __u32 target_vcn;
            __u32 alignment_or_reserved1;
            struct {                           Only present if lcns_to_follow is not 0.
                    __u32 lcn;
                    __u32 alignment_or_reserved;
            }  lcn_list[0];
    }  LOG_RECORD;

    重新启动区有一个指针到日志区,比如第一个和最后一个写入的日志记录以及最后一个写入的检查
    点记录。如果重新启动区出现问题,恢复起来将十分困难--因此要有两个重新启动区的拷贝。  
    
    单独的日志记录用逻辑序列号(LSNs)识别.虽然日志区被层层包围,但(LSNs)不是,所以它们被用以
    代替日志文件中的偏移量来识别日志记录。   
    
    任何有关元数据的修改(比如更新文件系统打开的时间标签)将导致日志文件动作,继而会导致重
    新启动区变化。这些有害比特一般是隐藏的:如果最后的日志记录表明没有未完的任务那么文件系
    统就是干净的。    </pre>

    <br>
    <a class="contact" href="http://linux-ntfs.sourceforge.net/ntfs/files/logfile.html">Online</a>
    <a class="contact" href="http://www.reddragonfly.org/ntfs/files/logfile.html">中文在线</a>
    <!-- The two validators will only work if this page is visible on the web -->                               
    <a class="contact" href="http://validator.w3.org/check/referer">Validate HTML</a>                               
    <a class="contact" href="http://jigsaw.w3.org/css-validator/check/referer">Validate CSS</a>                               
    <a class="contact" href="mailto:webmaster@flatcap.org">$Id: logfile.html,v 1.11 2001/07/11 16:31:45 flatcap Exp $</a>                               
  </body>
</html>

⌨️ 快捷键说明

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