通常,保留值表示在过去的某个时刻,也许在早已被弃用的 Windows 发布版本中,或者可能在从未公开发布的开发版本中,该值被用于某种目的,但该值不再具有意义。
通过将该值标记为保留值,可以防止未来的开发人员重复使用该值。如果重复使用该值,则可能会导致遗留软件出现意外行为。
在这种情况下,虽然你说位 3 是保留的,但我在头文件中看不到任何证据。我的头文件有这些宏定义:
#define FILE_ATTRIBUTE_READONLY 0x00000001
#define FILE_ATTRIBUTE_HIDDEN 0x00000002
#define FILE_ATTRIBUTE_SYSTEM 0x00000004
#define FILE_ATTRIBUTE_DIRECTORY 0x00000010
#define FILE_ATTRIBUTE_ARCHIVE 0x00000020
#define FILE_ATTRIBUTE_DEVICE 0x00000040
#define FILE_ATTRIBUTE_NORMAL 0x00000080
#define FILE_ATTRIBUTE_TEMPORARY 0x00000100
#define FILE_ATTRIBUTE_SPARSE_FILE 0x00000200
#define FILE_ATTRIBUTE_REPARSE_POINT 0x00000400
#define FILE_ATTRIBUTE_COMPRESSED 0x00000800
#define FILE_ATTRIBUTE_OFFLINE 0x00001000
#define FILE_ATTRIBUTE_NOT_CONTENT_INDEXED 0x00002000
#define FILE_ATTRIBUTE_ENCRYPTED 0x00004000
#define FILE_ATTRIBUTE_VIRTUAL 0x00010000
Run Code Online (Sandbox Code Playgroud)
我并没有从中推断出位 3 是保留的,只是没有使用它。
根据评论的讨论,只读、隐藏、系统、目录和归档属性的值与 DOS 和 FAT 文件系统使用的类似值相同。
例如,示例 fastfat 文件系统驱动程序具有以下宏声明:
#define FAT_DIRENT_ATTR_READ_ONLY 0x01
#define FAT_DIRENT_ATTR_HIDDEN 0x02
#define FAT_DIRENT_ATTR_SYSTEM 0x04
#define FAT_DIRENT_ATTR_VOLUME_ID 0x08
#define FAT_DIRENT_ATTR_DIRECTORY 0x10
#define FAT_DIRENT_ATTR_ARCHIVE 0x20
#define FAT_DIRENT_ATTR_DEVICE 0x40
Run Code Online (Sandbox Code Playgroud)
因此我们可以推断,当创建 Windows API 时,这些相同的价值观被继承下来,大概是为了让已经熟悉这些价值观的开发人员不必学习一组新的竞争价值观。DOS/FAT 中第 3 位对应的值没有与 Windows 文件属性直接类似的值,因此未被使用。
不过,所有这些都是猜测,我怀疑您需要找到一位原始 Windows API 开发人员来确认这一点。
| 归档时间: |
|
| 查看次数: |
1594 次 |
| 最近记录: |