主页 | 文件 | 属性 | 概念 | 词汇

# 文件 - $AttrDef (4)

前一页 后一页

## 概述

这是一个包含所有在卷中用到的文件属性信息的系统文件。

    属性结尾标记为 0xFFFFFFFF

## 属性

类型 | 描述 | 名称
--- | --- | ---
0x10 | 标准信息 （$STANDARD_INFORMATION） |
0x30 | 文件名 （$FILE_NAME） | $AttrDef
0x50 | 安全描述符 （$SECURITY_DESCRIPTOR） |
0x80 | 数据 （$DATA） | [未命名]

## 文件结构

### 未命名数据流

它的结构为一序列的记录，每个记录定义一个文件属性，它的结构如下：

偏移量 | 大小 | 描述
--- | --- | ---
0x00 | 128 | Unicode 编码的标签
0x80 | 4 | 类型
0x84 | 4 | 显示规则
0x88 | 4 | 整理规则
0x8C | 4 | 标记
0x90 | 8 | 最小尺寸
0x98 | 8 | 最大尺寸

## 注意

显示规则
  此时总为零
整理规则
  此时一般为零，但有可能是：

  标记 | 描述
  --- | ---
  0x00 | 二进制
  0x01 | 文件名
  0x02 | Unicode 编码字串
  0x10 | 无符号的长
  0x11 | SID
  0x12 | 安全的无用信息
  0x13 | 多重无符号的长

标记
  我们只证明3个标记：0x02, 0x40 and 0x80. 0x40 和 0x80好像从不在一起。 因此推测如下：

  标记 | 描述
  --- | ---
  0x02 | 被编入索引的
  0x40 | 常驻的
  0x80 | 非常驻的

  观察下面表格中的IRN一栏

### Windows NT Example

Type | Name | Flags | IRN | Min Size | Max Size
--- | --- | --- | --- | --- | ---
0x10 | $STANDARD_INFORMATION | 0x40 | R | 0x30 | 0x30
0x20 | $ATTRIBUTE_LIST | 0x80 | N | - | -
0x30 | $FILE_NAME | 0x42 | IR | 0x44 | 0x242
0x40 | $VOLUME_VERSION | 0x40 | R | 0x8 | 0x8
0x50 | $SECURITY_DESCRIPTOR | 0x80 | N | - | -
0x60 | $VOLUME_NAME | 0x40 | R | 0x2 | 0x100
0x70 | $VOLUME_INFORMATION | 0x40 | R | 0xC | 0xC
0x80 | $DATA | 0x00 |  | - | -
0x90 | $INDEX_ROOT | 0x40 | R | - | -
0xA0 | $INDEX_ALLOCATION | 0x80 | N | - | -
0xB0 | $BITMAP | 0x80 | N | - | -
0xC0 | $SYMBOLIC_LINK | 0x80 | N | - | -
0xD0 | $EA_INFORMATION | 0x40 | R | 0x8 | 0x8
0xE0 | $EA | 0x00 |  | - | 0x10000

$VOLUME_VERSION 和 $SYMBOLIC_LINK 出现在WINNT中但是不用，它们不出现在win2k和winxp中。

### Windows 2000 and Windows XP Example

Type | Name | Flags | IRN | Min Size | Max Size
--- | --- | --- | --- | --- | ---
0x10 | $STANDARD_INFORMATION | 0x40 | R | 0x30 | 0x48
0x20 | $ATTRIBUTE_LIST | 0x80 | N | - | -
0x30 | $FILE_NAME | 0x42 | IR | 0x44 | 0x242
0x40 | $OBJECT_ID | 0x40 | R | - | 0x100
0x50 | $SECURITY_DESCRIPTOR | 0x80 | N | - | -
0x60 | $VOLUME_NAME | 0x40 | R | 0x2 | 0x100
0x70 | $VOLUME_INFORMATION | 0x40 | R | 0xC | 0xC
0x80 | $DATA | 0x00 |  | - | -
0x90 | $INDEX_ROOT | 0x40 | R | - | -
0xA0 | $INDEX_ALLOCATION | 0x80 | N | - | -
0xB0 | $BITMAP | 0x80 | N | - | -
0xC0 | $REPARSE_POINT | 0x80 | N | - | 0x4000
0xD0 | $EA_INFORMATION | 0x40 | R | 0x8 | 0x8
0xE0 | $EA | 0x00 |  | - | 0x10000
0xF0 | $PROPERTY_SET | ? | ? | ? | ?
0x100 | $LOGGED_UTILITY_STREAM | 0x80 | N | - | 0x10000

$PROPERTY_SET 简单地出现在NTFSv3.0中，它偏向于支持本地结构存储（NSS）。

### 其他信息

添加用户定义的属性到此文件里是可能的。

        $AttrDef有多大？36k？
        在NT4里36k大部分是空白的
        现在2560＝15属性＋1空白（2.5k）

Online 中文在线 Validate HTML Validate CSS $Id: attrdef.html,v 1.11 2001/07/11 16:31:44 flatcap Exp $