文件特性常量

文件属性是由文件系统存储在磁盘上的元数据值,由系统使用,开发人员可通过各种文件 I/O API 使用。 有关相关 API 和主题的列表,请参阅 另请参阅 部分。

示例

FILE_BASIC_INFO basicInfo;
    BOOL result;

    result = GetFileInformationByHandleEx( hFile,
                                               FileBasicInfo,
                                               &basicInfo,
                                               sizeof(basicInfo));

\\...

printf("  File Attributes: ");
    PrintFileAttributes(basicInfo.FileAttributes);

\\...
VOID
PrintFileAttributes(
    ULONG FileAttributes
    )
{
    
    if (FileAttributes & FILE_ATTRIBUTE_ARCHIVE) {
        printf("Archive ");
    }
    if (FileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
        printf("Directory ");
    }
    if (FileAttributes & FILE_ATTRIBUTE_READONLY) {
        printf("Read-Only ");
    }
}

摘自 GitHub 上的 Windows 经典示例 的示例。

常量/值 说明
FILE_ATTRIBUTE_READONLY
1 (0x00000001)
只读文件。 应用程序可以读取文件,但不能写入或删除该文件。 在目录上不遵循此属性。 有关详细信息,请参阅 无法在 Windows Server 2003、Windows XP、Windows Vista 或 Windows 7 中查看或更改文件夹的只读或系统属性
FILE_ATTRIBUTE_HIDDEN
2 (0x00000002)
文件或目录处于隐藏状态。 它不包括在普通目录列表中。
FILE_ATTRIBUTE_SYSTEM
4 (0x00000004)
操作系统使用其中的一部分或独占使用的文件或目录。
FILE_ATTRIBUTE_DIRECTORY
16 (0x00000010)
标识目录的句柄。
FILE_ATTRIBUTE_ARCHIVE
32 (0x00000020)
作为存档文件或目录的文件或目录。 应用程序通常使用此属性来标记要备份或删除的文件。
FILE_ATTRIBUTE_DEVICE
64 (0x00000040)
此值保留供系统使用。
FILE_ATTRIBUTE_NORMAL
128 (0x00000080)
未设置其他属性的文件。 此属性仅在单独使用时才有效。
FILE_ATTRIBUTE_TEMPORARY
256 (0x00000100)
用于临时存储的文件。 如果有足够的缓存内存可用,文件系统会避免将数据写回到大容量存储,因为通常情况下,应用程序在句柄关闭后会删除临时文件。 在这种情况下,系统可以完全避免写入数据。 否则,在句柄关闭后写入数据。
FILE_ATTRIBUTE_SPARSE_FILE
512 (0x00000200)
是稀疏文件的文件。
FILE_ATTRIBUTE_REPARSE_POINT
1024 (0x00000400)
具有关联的重新分析点的文件或目录,或作为符号链接的文件。
FILE_ATTRIBUTE_COMPRESSED
2048 (0x00000800)
压缩的文件或目录。 对于文件,将压缩该文件中的所有数据。 对于目录,压缩是新建文件和子目录的默认设置。
FILE_ATTRIBUTE_OFFLINE
4096 (0x00001000)
文件的数据不会立即可用。 此属性指示文件数据以物理方式移动到脱机存储。 此属性由远程存储(分层存储管理软件)使用。 应用程序不应随意更改此属性。
FILE_ATTRIBUTE_NOT_CONTENT_INDEXED
8192 (0x00002000)
内容索引服务不会为文件或目录编制索引。
FILE_ATTRIBUTE_ENCRYPTED
16384 (0x00004000)
加密的文件或目录。 对于文件,文件中的所有数据流都已加密。 对于目录,加密是新创建的文件和子目录的默认加密。
FILE_ATTRIBUTE_INTEGRITY_STREAM
32768 (0x00008000)
目录或用户数据流配置了完整性 (仅在 ReFS 卷) 上受支持。 它不包括在普通目录列表中。 如果文件已重命名,完整性设置将一直保留。 如果复制了某个文件,则如果源文件或目标目录设置了完整性,则目标文件将具有完整性设置。
Windows Server 2008 R2、Windows 7、Windows Server 2008、Windows Vista、Windows Server 2003 和 Windows XP:在Windows Server 2012之前,不支持此标志。
FILE_ATTRIBUTE_VIRTUAL
65536 (0x00010000)
此值保留供系统使用。
FILE_ATTRIBUTE_NO_SCRUB_DATA
131072 (0x00020000)
后台数据完整性扫描程序不读取的用户数据流 (AKA 清理器) 。 在目录上设置时,它仅提供继承。 此标志仅在 存储空间 和 ReFS 卷上受支持。 它不包括在普通目录列表中。
Windows Server 2008 R2、Windows 7、Windows Server 2008、Windows Vista、Windows Server 2003 和 Windows XP:在Windows 8和Windows Server 2012之前,不支持此标志。
FILE_ATTRIBUTE_EA
262144 (0x00040000)
具有扩展属性的文件或目录。

重要: 此常量仅供内部使用。
FILE_ATTRIBUTE_PINNED
524288 (0x00080000)
此属性指示用户意图,即即使未主动访问文件或目录,也应在本地保持完全存在。 此属性用于分层存储管理软件。
FILE_ATTRIBUTE_UNPINNED
1048576 (0x00100000)
此属性指示,除非主动访问文件或目录,否则不应在本地完全存在。 此属性用于分层存储管理软件。
FILE_ATTRIBUTE_RECALL_ON_OPEN
262144 (0x00040000)
此属性仅出现在目录枚举类 (FILE_DIRECTORY_INFORMATION、FILE_BOTH_DIR_INFORMATION等) 中。 设置此属性时,这意味着文件或目录在本地系统上没有物理表示形式;项是虚拟的。 打开该项目的成本将比平常要高,例如,它会导致至少从远程存储中提取其中一部分。
FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS
4194304 (0x00400000)
如果设置了此属性,则意味着文件或目录在本地未完全存在。 对于表示并非所有数据都位于本地存储 (的文件,例如,它可能稀疏,某些数据仍位于远程存储) 中。 对于目录,这意味着某些目录内容正在从另一个位置虚拟化。 读取文件/枚举目录的成本将比平常要高,例如,这会导致至少从远程存储中提取一些文件/目录内容。 只有内核模式调用方可以设置此位。

文件系统微型筛选器低于 180000 – 189999高度范围 (FSFilter HSM 加载顺序组) 不得对设置了此属性的文件发出目标缓存读取或写入。 这可能会导致缓存污染和潜在的文件损坏。 有关详细信息,请参阅 处理占位符

要求

要求
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
Header WinNT.h (包括 Windows.h)

请参阅

压缩属性

创建和打开文件

CreateFile

CreateFileTransacted

GetFileAttributes

GetFileAttributesEx

GetFileAttributesTransacted

GetFileInformationByHandle

GetFileInformationByHandleEx

SetFileAttributes

SetFileAttributesTransacted

SetFileInformationByHandle