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

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

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

PKEY は、GUID と DWORD で構成される値のペアであり、それぞれ formatID および propID と呼ばれます。 これは、 PROPERTYKEY 構造体で表されます。 ほとんどのプロパティ システム API は、これらのプロパティ キーを受け入れます。 Windows ソフトウェア開発キット (SDK) には、ヘッダー ファイル Propkey.h が含まれています。このファイルには、PKEY_GroupName_PropertyNameの規則を使用した各System プロパティ キーのマクロ定義が含まれています。 たとえば、 PKEY_Photo_DateTaken は正規名 System.Photo.DateTakenを持つプロパティのプロパティ キーです。 プロパティ値は、OLE VARIANT 型の拡張機能である PROPVARIANT 構造体の形式で格納されます。

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

Note

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

 

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

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