3

誰かが構造体のpidフィールドが何であるかを説明できますか?PROPERTYKEYMicrosoftは、0or1を使用しないで、あなたは大丈夫だと言っていますがIPropertyStore、コードに実装する必要がある場合、これは役に立ちません。pidキーの一部であると想定されているので、同じであるが異なる複数の値がfmtid存在pidする可能性がありますか?または、無視する必要があるので、無視しGetValueて、一致する値を返す必要がありますか?fmtidpid

4

1 に答える 1

5

この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を定義することを好みます。

于 2013-03-13T15:00:26.677 に答える