有人可以解釋一下PROPERTYKEY
結構中的pid
字段是什麼嗎?微軟說,只是不使用0
或1
,你很好,但是當我需要在我的代碼中實現IPropertyStore
時,這沒有幫助。 pid
是否應該是密鑰的一部分,因此可能存在具有相同fmtid
但不同pid
的多個值?或者應該忽略,所以GetValue
應返回任何值與匹配fmtid
,忽略pid
?PROPERTYKEY :: pid含義
1
A
回答
3
此fmtid + pid組合歷史上與OLE相關(是的,這很舊)。
那時,fmtid
(格式ID)就像一個類別,pid(屬性ID)是類別中的屬性標識符。例如,您在此處定義了第一個FMTID:Predefined Property Set Format Identifiers。這些屬性仍然用於Office文檔(作者,關鍵字等)。因此,每個類別有很多屬性(對於很多屬性只有很少的屬性),但fmtid和pid的組合總是使屬性在整個空間中唯一星系。
其他FMTID因爲出現了,你可以在Windows SDK的propkey.h在看看:FMTID_AudioSummaryInformation,FMTID_Volume,FMTID_ShellDetails等..
今天,對於一些新的特性,在FMTID並不意味着什麼了。例如,System.Contact.Birthday具有1 76DC63C-2688-4E89-8143-A347800F25E9
的fmtid和47
的id,但fmtid沒有特別的含義,並且沒有具體定義,所以它實際上可以僅用於密鑰。因此,對於一個給定的屬性,你必須考慮到鍵仍然是兩者的結合(因此結構名稱:PROPERTYKEY),但是你可以用pid定義你自己的屬性大於或等於2(如官方文檔指定)和fmtid作爲新的guid,如果你願意。我個人仍然傾向於爲一組屬性定義一個共同的FMTID。
相關問題
- 1. PID,PPID和TGID的含義
- 2. Webpack重複標識符'PropertyKey'
- 3. 找不到名稱「PROPERTYKEY」
- 4. proc/[pid]/stat中值的含義是什麼?
- 5. Spring Boot Neo4J沒有屬性propertyKey =「__ type__」
- 6. photoswipe - 如何使自定義pid工作
- 7. windll.kernel32.OpenProcess(PROCESS_ALL_ACCESS,PID,False):Process_all_Access未定義
- 8. 爲什麼Apache Pid文件未定義?
- 9. Hhvm無法在重新啓動後讀取任何有意義的pid的pid文件/ var/run/hhvm/pid
- 10. 由PID
- 11. Angular2 AOT編譯器錯誤,重複identificeren PROPERTYKEY
- 12. 將Cygwin PID轉換爲Windows PID
- 13. python - subprocess.Popen()。pid返回父腳本的pid
- 14. pid =`cat $ pidfile`或讀取pid <$ pidfile?
- 15. /proc/[pid]/pagemaps和/ proc/[pid]/maps | linux
- 16. 含義
- 17. 含義
- 18. 含義
- 19. 含義
- 20. 含義類定義
- 21. setproctitle是否會導致proc/PID/cmdline包含env變量?
- 22. 錯誤:CorePlot0不包含有效的核心圖pid
- 23. RCHAR是否包含READ_BYTES(proc/<pid>/io)?
- 24. 什麼是.pid文件,它包含什麼?
- 25. 如何找到包含X的窗口的PID
- 26. PID:13275 java.lang.UnsatisfiedLinkError:com.android.tools.fd.runtime.IncrementalClassLoader
- 27. MsMBox後WinMinimize PID
- 28. Elixir - detached pid
- 29. SENDTO PID和組
- 30. Erlang-Pid控件
不要使用pid零或一個,即使對於自定義fmtids。 – 2013-03-13 15:04:11
@RaymondChen - PROPERTYKEY參考文檔確實規定了值必須大於或等於2.這些是PID_DICTIONARY和PID_CODEPAGE對不對?我知道這些對於OLE複合存儲有特殊意義,但即使不用於複合文件,它仍然被禁止? – 2013-03-13 15:11:53
保留的pid是保留的。 – 2013-03-13 15:20:09