(bindlink.h) CREATE_BIND_LINK_FLAGS 枚举

这些标志可以传递到 CreateBindLink ,以更改默认绑定链接行为以满足用户的需求。

语法

typedef enum CREATE_BIND_LINK_FLAGS {
  CREATE_BIND_LINK_FLAG_NONE,
  CREATE_BIND_LINK_FLAG_READ_ONLY,
  CREATE_BIND_LINK_FLAG_MERGED
} ;

常量

 
CREATE_BIND_LINK_FLAG_NONE
0x00000000

未指定绑定链接标志。
CREATE_BIND_LINK_FLAG_READ_ONLY
0x00000001

只读链接是绑定链接,如果系统上的用户通过虚拟路径进行访问,则禁止它们对驻留在后备路径中的文件进行更改。 这意味着,有权修改备份路径上的文件的用户如果通过支持路径访问该文件,仍然可以修改该文件,但如果通过虚拟路径访问该文件,则不能修改该文件。 通常,当访问相应的虚拟路径时,后备路径的权限适用,但是当 使用READ_ONLY 标志时,“写入”权限将被屏蔽。 这可确保应用程序看到文件已 READ_ONLY

请注意,只读限制仅适用于驻留在磁盘上的后备路径的文件。 如果链接已合并,并且最初来自虚拟目录路径的文件可见,它们将保持可修改状态。 例如:

C:\Foo 存在于具有文件 Cat.txt 的磁盘上
C:\Bar 存在于具有文件 Cow.txt 的磁盘上

如果创建链接时将 C:\Foo 作为虚拟路径,将 C:\Bar 作为后备路径,并且链接标记为只读且已合并,Cat.txt 和 Cow.txt 将在 C:\Foo 上可见,但是,Cat.txt 是可修改的,而 Cow.txt 不可修改。
CREATE_BIND_LINK_FLAG_MERGED
0x00000002

合并链接类似于阴影链接,但虚拟路径中的现有内容与支持路径合并。

让我们再次考虑前面的阴影链接示例,并添加此标志。 例如:

- C:\Foo 存在于磁盘上,Cat.txt 和 Dog.txt
- C:\Bar 存在于磁盘上,其中包含两个文件 Cow.txt 和 Mouse.txt

创建链接时,使用 C:\Foo 作为虚拟路径,将 C:\Bar 作为 CREATE_BIND_LINK_FLAG_MERGED标志作为后备路径,C:\Foo 路径将显示 Cat.txt、Dog.txt、Cow.txt 和 Mouse.txt。

请注意,仅当虚拟路径为目录时,合并链接才适用。 如果文件同时出现在支持路径和虚拟路径中,则支持路径中的文件优先 (即虚拟路径中的文件被屏蔽) 。 这以递归方式应用于虚拟路径中的所有目录。 由于合并适用于目录,如果 virtualPathbackingPath 在同一级别上具有相同名称的目录,该目录将作为链接的结果进行合并。 如果链接不是合并链接,则支持路径中的目录将优先,并替代 virtualPath 中的目录。 如果在合并链接存在时在合并路径上创建了文件,则会在后备路径 (实际创建该文件,就像任何绑定链接) 一样,并将替代 virtualPath 中具有相同名称的文件。

让我们考虑以下目录结构:

- c:\Foo\Sub\Foo_sub.txt
- c:\Bar\Sub\Bar_sub.txt

还有两个不同的链接:

- {c:\Foo 已链接到 c:\Bar WITHOUT merge}。 在这种情况下,c:\Foo\Sub 将仅显示 Bar_sub.txt。
- {c:\Foo 已链接到 c:\Bar WITH merge}。 在这种情况下,c:\Foo\Sub 将显示 Foo_sub.txt 和 Bar_sub.txt。

由于绑定链接是基于路径的链接,如果在创建链接后在支持路径中替换、修改或删除/重新创建文件,则虚拟路径将指向跟踪链接时存在的文件。 之所以发生这种情况,是因为链接在打开文件时已解析。 因此,如果备份路径中的文件由于链接而屏蔽虚拟路径中的文件,并且如果删除了备份路径中的文件,则后续打开将在虚拟路径中打开该文件。

要求

要求
Header bindlink.h

另请参阅

CreateBindLink