属性 | 含义 |
FILE_ATTRIBUTE_ARCHIVE
32 (0x20) | 文件应该被存档。应用程序使用此属性来备份或移除标记文件 |
FILE_ATTRIBUTE_ENCRYPTED
16384 (0x4000) | 1. 文件或目录被加密。对于文件来说,这意味着文件中所有数据都被加密了;对于目录来说,这意味着加密新创建的文件和子文件夹是默认选项。更多信息,参见 File Encryption
2. 如果指定了FILE_ATTRIBUTE_SYSTEM标记位,则这个标记位不起作用
3. 这个标记位在以下 Windows 版本中不被支持:家庭版、家庭高级版、简易版或 ARM 版本 |
FILE_ATTRIBUTE_HIDDEN
2 (0x2) | 文件被隐藏。即在普通文件夹中不被显示 |
FILE_ATTRIBUTE_NORMAL
128 (0x80) | 这个文件不包含其他属性。只有当它单独使用时,这个属性值才是合法的 |
FILE_ATTRIBUTE_OFFLINE
4096 (0x1000) | 文件的数据无法直接访问。这个属性表示文件数据在物理设备中被移动到一个离线存储器。这个属性被远程存储(Remote Storage)—— 即分级存储管理软件 —— 所使用。我们的程序不能随意改变这个属性值 |
FILE_ATTRIBUTE_READONLY
1 (0x1) | 文件只读。程序可以读取文件,但无法写入或删除文件 |
FILE_ATTRIBUTE_SYSTEM
4 (0x4) | 文件是操作系统的的一部分或者专门为操作系统所使用 |
FILE_ATTRIBUTE_TEMPORARY
256 (0x100) | 1. 文件用于存储临时数据
2. 更多信息,参见 Caching Behavior |
标志位 | 含义 |
FILE_FLAG_BACKUP_SEMANTICS
(0x02000000) | 1. 此文件已经被打开或者创建以用于备份或者恢复操作。当调用进程拥有 SE_BACKUP_NAME 和 SE_RESTORE_NAME 权限时,系统保证调用进程覆盖文件安全检测。更多信息,参见 Changing Privileges in a Token
2. 为了获取一个文件夹句柄,你必须设置这个标记位。某些函数只能接受文件夹句柄而非文件句柄。更多信息,参见本文备注 |
FILE_FLAG_DELETE_ON_CLOSE
(0x04000000) | 1. 在所有与此文件相关的句柄被关闭后,文件马上会被删除。与此文件相关的句柄包括当前句柄和任意其他打开或者被复制的句柄
2. 如果存在指向文件的句柄,且所有这些句柄是以 FILE_SHARE_DELETE 共享模式创建,则函数执行失败。如果没有指定 FILE_SHARE_DELETE 共享模式,文件后续的打开请求都会失败 |
FILE_FLAG_NO_BUFFERING
(0x20000000) | 1. 文件或设备被以读写无缓冲区的方式打开。此标记位对于硬盘或者内存映射文件无效。
2. 此外,若想让 FILE_FLAG_NO_BUFFERING 标记位正常工作,还需要满足一些严格的要求,具体参见 File Buffering |
FILE_FLAG_OPEN_NO_RECALL
(0x00100000) | 文件数据被请求,但它不应该继续在远程存储器中被定位。文件数据不应该传输回本地存储器。这个标记位被远程存储系统所使用 |
FILE_FLAG_OPEN_REPARSE_POINT
(0x00200000) | 1. 不会发生正常的 reparse point 过程。 CreateFile 函数将会尝试去打开一个 reparse point。当一个文件被打开,无论控制 reparse point 的过滤器是否可操作,都会返回一个文件句柄
2. 此标记无法与 CREATE_ALWAYS 标记位共同使用
3. 如果文件不是一个 reparse point,那么此标记位无效
4. 更多信息,参见本文备注 |
FILE_FLAG_OVERLAPPED
(0x40000000) | 1. 此文件或设备被打开或创建,用于异步 I/O
2. 当后续的 I/O 操作通过此句柄执行完成,则 OVERLAPPED 结构中指定的事件会被设置为受信状态
3. 如果此标记位被指定,此文件可以被用于同步读写操作
4. 如果此标记为未被指定,则 I/O 操作被序列化,即使对读写函数的调用指定了一个 OVERLAPPED 结构
5. 更多关于使用一个指定了此标记位的文件句柄的信息,参见本页 Synchronous and Asynchronous I/O Handles 章节 |
FILE_FLAG_POSIX_SEMANTICS
(0x0100000) | 遵循 POSIX 规则,这包括允许多个文件名,只是在不同的情况下,为支持该命名规则的文件系统。当使用此选项时要小心,因为一个使用此标记位创建的文件可能无法被某些为 MS-DOS 或 16 位 Windows 操作系统所编写的程序所访问 |
FILE_FLAG_RANDOM_ACCESS
(0x10000000) | 1. 文件访问为随机访问。此系统可以使用这个用于优化文件缓存
2. 如果文件系统不支持 I/O 缓冲和 FILE_FLAG_NO_BUFFERING 标记,则此标记位无效
3. 更多信息,参见 Caching Behavior |
FILE_FLAG_SESSION_AWARE
(0x00800000) | 1. 文件或设备带 session awareness 打开。如果此标记位没有被指定,则 per-session 设备(一个使用 RemoteFX USB 重定向的设备)无法被运行在 session 0 的进程所打开。如果调用进程没有运行在 session 0,则此标记位无效。此标记位只支持在 server 版本的 Windows
2. Windows Server 2008 R2 和 Windows Server 2008:此标记位不支持 Windows Server 2012 之前的版本 |
FILE_FLAG_SEQUENTIAL_SCAN
(0x08000000) | 1. 表示文件访问将从头顺序读到尾。系统利用此标记位用于优化文件缓存
2. 如果你打算从文件尾读到文件头(即反向扫描文件),则不该使用此标记位
3. 如果文件系统不支持 I/O 缓存和 FILE_FLAG_NO_BUFFERING 标记位,则此标记位无效
4. 更多信息,参见 Caching Behavior |
FILE_FLAG_WRITE_THROUGH
(0x80000000) | 1. 写操作不会通过任何中间缓冲区缓冲,而是直接写回磁盘
2. 更多信息,参见 Caching Behavior |