bindlink.) h (CREATE_BIND_LINK_FLAGS 列舉
這些旗標可以傳入 CreateBindLink ,以變更預設系結連結行為,以符合使用者的需求。
Syntax
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。 由於系結連結是以路徑為基礎的連結,如果在建立鏈接之後,在備份路徑中取代、修改或刪除/重新建立檔案,則虛擬路徑會指向追蹤連結時存在的檔案。 這是因為開啟檔案時會解析連結。 因此,如果備份路徑中的檔案因為連結而遮罩了虛擬路徑中的檔案,而且如果備份路徑中的檔案已刪除,後續開啟將會在虛擬路徑中開啟檔案。 |
規格需求
需求 | 值 |
---|---|
標頭 | bindlink.h |