共用方式為


瞭解屬性處理常式

屬性會以稱為屬性識別碼的識別碼來表示, (PID) 。 每個屬性都必須有全域唯一識別碼 (GUID) 。 此識別碼包含 GUID,代表稱為屬性集的屬性集合,加上字串或 32 位整數,以識別集合中的屬性。 如果使用識別碼的整數形式,則會將值0x00000000、0xFFFFFFFF和0xFFFFFFFE視為無效。 廠商可以藉由將屬性放在自己的 GUID 所定義的屬性集中,以確保其屬性是唯一定義的。

重要

請務必仔細且策略地為架構的第一個版本定義屬性。 對自訂屬性所做的任何變更 (,例如資料行寬度或屬性類型) ,都不會在註冊架構之後反映在資料庫中。 在系統上註冊一次架構之後,讓這些變更辨識的唯一方式是重建索引,然後註冊新的架構,或註冊架構,然後建立由標準名稱和 PKEY) 所組成之每個子佇列發行的新屬性 (;例如 PKEY_GroupName_PropertyNameV2PKEY_GroupName_PropertyNameV3 等) 。 我們不建議以此方式建立新的屬性,因為多個無關的資料行可能會影響系統效能。

 

本主題的組織方式如下:

中繼資料

在 Windows Vista 和更新版本中,以中繼資料為基礎的新屬性系統是組織檔案、電子郵件和連絡人等專案的核心。 在這個新的屬性系統中,專案可以根據其中繼資料進行搜尋,而且使用者可以讀取或寫入該中繼資料。 此系統中的中繼資料是由實作為名稱/值組的可延伸 屬性 集來表示。

在 Windows Vista 和更新版本中,一組廣泛的屬性涵蓋相片、音樂、檔、訊息、連絡人和檔案等專案的詳細資料。 獨立軟體廠商 (ISV) 如果沒有現有的屬性符合其需求,就可以將自己的屬性導入平臺。

開啟中繼資料

Windows Vista 和更新版本中的屬性系統是開放式中繼資料系統。 檔案格式會儲存指派給它的任何屬性,並在查詢時公開該值,而不論相關性或意義為何。 這可讓協力廠商開發人員將額外的屬性附加至檔案,而不需要變更與其相關聯的屬性處理常式。 開放式中繼資料是功能強大的概念。 如需如何支援 XML 架構檔案格式之開啟中繼資料的詳細資訊,請參閱 初始化屬性處理常式中的。

注意

屬性處理常式一律會與特定檔案類型相關聯;因此,如果您的檔案格式包含需要自訂屬性處理常式的屬性,您應該一律為每個檔案格式註冊唯一的副檔名。

 

關於屬性處理常式

在 Windows Vista 和更新版本中,Windows 具有可延伸的屬性系統,可用來儲存和擷取您存取的檔案和資料項目中的中繼資料。 Windows 檔案總管和 Windows 搜尋系統以及其他應用程式,使用屬性處理常式來讀取和修改此中繼資料。 如果您是擁有特定檔案類型的開發人員,您應該註冊屬性處理常式,讓屬性系統存取檔案中的中繼資料。 在某些情況下,您可以使用現有的屬性處理常式來讀取並瞭解檔案格式及其屬性;在其他情況下,您可能需要為檔案類型開發新的屬性處理常式。

撰寫屬性處理常式的第一個步驟是考慮檔案類型所支援的屬性。 屬性值會儲存在檔案資料流程中,主要是為了啟用可傳輸性。 當屬性值儲存在檔案本身時,如同其位於此系統,使用者可以將檔案複製到另一部電腦、USB 快閃磁片磁碟機或其他檔案系統,或以電子郵件附件的形式傳送檔案時,屬性會隨著檔案一起移動,且永遠不會同步或遺失。 因此,如果檔案格式支援儲存額外的資訊,最好將屬性儲存在檔案本身。

下一個步驟是判斷檔案應該提供哪些屬性。 您一開始可能會認為一組有限的屬性已足夠。 音訊檔案只能支援音訊相關屬性,並在該處結束。 不過,該音訊檔案可能是法律機關所封存之法律訴訟的會話錄製。 在此情況下,法律公司當然會想要將其他非音訊屬性與此檔案產生關聯,例如案例編號。 音訊檔案格式的提供者無法判斷將使用其格式的所有案例。 因此,他們應該考慮啟用屬性系統所支援的任何任意屬性的儲存空間。

舊版技術

Microsoft Windows NT檔案系統 (NTFS) 次要串流技術已開發,可透過檔案系統層上設定的替代資料流程,來支援檔案的額外資訊持續性。 其中一個可能想知道為何這些次要資料流程不是用來儲存屬性的主要方法,特別是開啟的中繼資料支援。 主要原因是這項額外資訊的可傳輸性。 不幸的是,這些替代資料流程在許多案例中都會移除,包括用戶端快取支援 (CSC) 、將檔案傳送為附件,以及將檔案複製到非 NTFS 存放區。

次要資料流程不會提供強固的解決方案,其中屬性保證會與檔案一起移動,因此,Windows Vista 屬性系統不會提供內建機制來利用屬性儲存體的次要 NTFS 資料流程。 也強烈建議您不要建置使用次要資料流程來儲存屬性的屬性處理常式。 當然,在某些情況下,NTFS 次要資料流程是適當的,特別是當應用程式可以保證所處理的檔案一律儲存在 NTFS 磁片區中,而且不會因為使用者互動而移動。

使用種類名稱

使用屬性清單

初始化屬性處理常式

註冊和散發屬性處理常式

屬性處理常式最佳做法和常見問題