(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。 请注意,仅当虚拟路径为目录时,合并链接才适用。 如果文件同时出现在支持路径和虚拟路径中,则支持路径中的文件优先 (即虚拟路径中的文件被屏蔽) 。 这以递归方式应用于虚拟路径中的所有目录。 由于合并适用于目录,如果 virtualPath 和 backingPath 在同一级别上具有相同名称的目录,该目录将作为链接的结果进行合并。 如果链接不是合并链接,则支持路径中的目录将优先,并替代 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 |