誰かが構造体のpid
フィールドが何であるかを説明できますか?PROPERTYKEY
Microsoftは、0
or1
を使用しないで、あなたは大丈夫だと言っていますがIPropertyStore
、コードに実装する必要がある場合、これは役に立ちません。pid
キーの一部であると想定されているので、同じであるが異なる複数の値がfmtid
存在pid
する可能性がありますか?または、無視する必要があるので、無視しGetValue
て、一致する値を返す必要がありますか?fmtid
pid
1 に答える
このfmtid+pidの組み合わせは、歴史的にOLEに関連しています(はい、かなり古いです)。
当時、fmtid
(フォーマットID)はカテゴリのようなもので、pid(プロパティID)はカテゴリのプロパティ識別子でした。たとえば、ここに最初のFMTIDが定義されています:事前定義されたプロパティセット形式識別子。これらのプロパティは引き続きOfficeドキュメント(作成者、キーワードなど)に使用されます。したがって、カテゴリごとに多くのプロパティがあります(多くのプロパティに対してfmtidが少ないため)が、fmtidとpidの両方を組み合わせると、プロパティは常にスペース全体で一意になります。銀河。
その他のFMTIDは、Windows SDKのpropkey.hで確認できます。FMTID_AudioSummaryInformation、FMTID_Volume、FMTID_ShellDetailsなどです。
今日、いくつかの新しいプロパティについては、FMTIDはもはや何の意味もありません。たとえば、System.Contact.Birthdayのfmtidは1 76DC63C-2688-4E89-8143-A347800F25E9
、idは47
ですが、fmtidには特別な意味はなく、具体的に定義されていないため、実際にはキーにのみ使用できます。
したがって、特定のプロパティについて、キーはまだ両方の組み合わせであると見なす必要があります(したがって、構造名:PROPERTYKEY)が、pidを使用して独自のプロパティを2以上の値として定義できます(公式ドキュメントで指定されています)必要に応じて、新しいGUIDとしてfmtidを使用します。私は個人的には、プロパティのグループに対して1つの共通のFMTIDを定義することを好みます。