元件的邏輯路徑
邏輯路徑 用來將寫入器管理的元件組織成定義完善的群組。
邏輯路徑類似於傳統檔案路徑的結構,使用反斜杠 “\” 來分隔路徑中的元素。 不同於檔案路徑,邏輯路徑的根目錄 NULL,而不是 “\”。
邏輯路徑會以 NULL終止字串表示,而且路徑可以包含的字元沒有其他限制。
邏輯路徑的最重要用法是在定義 元件集中,其中 明確元件 包含在一個可選取元件的備份或還原作業中需要包含一些其他元件(子元件)。 元件集定義元件的邏輯路徑是其子元件邏輯路徑的父系,而且:
- 子元件必須共用為定義元件集之可選取元件的邏輯路徑的根路徑。
- NULL 的根路徑有效。
- 定義可選取元件的名稱必須是在元件集的每個不可選取子元件的根路徑之後的第一個邏輯路徑元素。
- 元件集可以是巢狀的。
- 邏輯路徑和元件名稱的組合在 寫入器類別的所有實例之間必須是唯一的,。
下列定義邏輯路徑結構的寫入器 MyWriter 假設範例說明邏輯路徑。
元件名稱 | 邏輯路徑 | 可選取進行備份 |
---|---|---|
“可執行檔” | "" | N |
“ConfigFiles” | “可執行檔” | N |
許可資訊 | "" | Y |
“安全性” | "" | Y |
“UserInfo” | “安全性” | N |
證書 | “安全性” | N |
“writerData” | "" | Y |
“Set1” | “writerData” | N |
“Jan” | “writerData\Set1” | N |
12月 | “writerData\Set1” | N |
“Set2” | “writerData” | N |
“Jan” | “writerData\Set2” | N |
12月 | “writerData\Set2” | N |
“Query” | “writerData\QueryLogs” | N |
使用方法 | “writerData” | Y |
“Jan” | “writerData\Usage” | N |
12月 | “writerData\Usage” | N |
請注意,元件 「Executables」 和 「ConfigFile」 具有父子式關聯性,但兩者都是不可選取的。 因此,它們不會形成元件集。 每當寫入器 MyWriter 備份或還原時,這兩個元件都必須被明確地 包含在作業中。
「LicenseInfo」元件無法與上階或下階一起選取。 在備份或還原作業中,它可以由要求者自行決定是否明確包含。
「安全性」元件定義了一個簡單的元件集,並且其下方不包含任何其他元件集。
元件 「writerData」 會定義元件集,其中包含一組複雜的元件集合,其下方有數個定義完善的邏輯路徑階層。
一個子元件「使用量」是可選取的,並定義元件集。
多個元件具有相同的名稱,並依其邏輯路徑進行區分。 不可選取元件「Dec」和「Jan」的實例存在於不可選取的元件「Set1」和「Set2」下,也存在於可選取的子元件「Usage」之下。
如果元件 「writerData」 明確包含在備份或還原中,則其所有子元件,即使是 「Usage」 所定義之巢狀元件集中的元件,也會在作業中隱含包含隱含包含。
如果 「writerData」 所定義的元件集未明確包含在備份或還原中,則元件 “Set1”、“Set2” 和 “QueryLogs” (及其子元件 “Dec” 和 “Jan” 的實例將不會隱含地包含在備份或還原作業中。
不過,即使作業中未包含 「writerData」,元件「使用方式」仍可選取,而且仍可明確包含在備份或還原作業中。 如果是,則會隱含包含其子元件 「Jan」 和 「Dec」。
其他值得注意的要點:
- 可選取的元件 「LicenseInfo」 和 「writerData」 和不可選取的元件 「Executables」 全都位於 MyWriter邏輯路徑階層中的相同層級:所有邏輯路徑都相同,NULL 或 “”,都是根邏輯路徑。
- 可選擇的元件「使用量」在可選擇的父代(“writerData”)被明確包含在備份或還原作業中時,不應該被明確包含在備份中。
- 定義元件集的元件可能只是因為組織原因而存在。 例如,「writerData」或「Usage」元件,或者兩者都是可能為空的;也就是說,沒有將檔案集 使用IVssCreateWriterMetadata::AddFilesToFileGroup、IVssCreateWriterMetadata::AddDatabaseFiles 或 IVssCreateWriterMetadata::AddDatabaseLogFiles 方法新增進去。 元件仍會定義元件集。