Share via


カスタム プロパティの作成

Windows Vista 以降のプロパティ システムで使用されるプロパティは、プロパティ スキーマで宣言されます。 これらのプロパティ スキーマは XML ファイルで定義され、プロパティの種類 (プリミティブ型に関する情報や複数値の情報を含む)、Windows UI での表示方法、使用するラベルの種類 (ユーザー フレンドリな編集文字列)、およびアクセスを高速化するために検索ストアにキャッシュされる方法など、プロパティのさまざまな側面を記述します。 プロパティは、正規名またはプロパティ キー (PKEY) で識別されます。

正規名は プロパティのリーダーフレンドリ名であり、Microsoft .NET で使用されるのと同様の名前空間規則を使用します。 システム定義プロパティ (Windows に含まれるプロパティ) の場合、規則は です System.GroupName.PropertyName。 これらの名前には、各単語の先頭の文字を大文字にするパスカル大文字の大文字のスキームが使用されていることに注意してください。 正規名は、プロパティ リストやプロパティ キャッシュ内の列名など、さまざまな場所で使用されます。 したがって、プロパティ値を取得するために、構造化照会言語 (SQL) クエリで使用されます。

PKEY は、それぞれ formatIDpropID と呼ばれる GUID と DWORD で構成される値のペアです。 PROPERTYKEY 構造体で表されます。 ほとんどのプロパティ システム API は、これらのプロパティ キーを受け入れます。 Windows Software Development Kit (SDK) には、プロパティ キーPKEY_GroupName_PropertyNameのマクロSystem定義を 含むヘッダー ファイル Propkey.h が含まれています。 たとえば、 PKEY_Photo_DateTaken は正規名 System.Photo.DateTakenを持つ プロパティのプロパティ キーです。 プロパティ値は、OLE VARIANT 型の拡張である PROPVARIANT 構造体の形式で格納されます。

このセクションには、カスタム プロパティの作成に不可欠な次のトピックが含まれています。

Note

プロパティ システムのスキーマを使用する際にインデクサーに問題が生じる可能性があるため、スキーマの最初のリリースでは属性を慎重かつ戦略的に定義することが重要です。 属性 (型、列幅、インデックス可能かどうか) に対する変更は、スキーマの登録後にデータベースに反映されません。 スキーマがシステムに 1 回登録された後にこれらの変更を認識する唯一の方法は、インデックスを再構築してから新しいスキーマを登録するか、スキーマを登録して以降のリリースごとに新しいプロパティを作成することです。、PKEY_GroupName_PropertyNameV2PKEY_GroupName_PropertyNameV3、など)。 複数の余分な列がシステム パフォーマンスに影響を与える可能性があるため、この方法で新しいプロパティを作成することはお勧めしません。

 

プロパティ ハンドラーの実装

プロパティの説明スキーマ