プロパティの説明スキーマについて

このトピックでは、シェル プロパティ システムで使用されるプロパティの説明スキーマについて説明します。

Windows Vista 以降の新機能の導入では、既存のシェル プロパティ システムを次のように拡張する必要があります。

  • 表示名、型、表示の種類、並べ替えとグループの動作、およびプロパティの表示と操作に必要なその他の属性など、プロパティに関する情報を提供する、豊富で拡張可能なプロパティ記述システムをサポートします。
  • さまざまなプロパティに関連付けることができるプロパティの種類 (リストビュー、プレビュー ウィンドウ、プロパティ ダイアログなど、さまざまなビューでこれらの型を編集できる UI と組み合わせて) のストック リストをサポートします。
  • さまざまなビューに表示されるプロパティのセットを定義するプロパティの説明リストを指定します。
  • 簡略化されたインターフェイス IPropertyStore を提供して、プロパティ ハンドラーをより簡単に書き込み、プロパティをファイルに永続化できるようにします。
  • ビュー内のプロパティを公開するためのファイル以外のプロパティ ハンドラーのサポート。

これらの機能は、シェル項目のプロパティへの抽象アクセスを提供するアーキテクチャで実現されます。 この抽象化は、シェル プロパティ システムと呼ばれます。

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

スキーマ サブシステムは、次で構成されます。

  • プロパティの説明を定義する 1 つ以上の .propdesc スキーマ ファイル。 プロパティ記述スキーマは、システム上の実行時に (.propdesc ファイル拡張子を使用して) XML スキーマ ファイルのコレクションで定義されます。 これらのファイルは、プロパティ システムの一部で必要なときに遅延読み込まれます。
  • 解析されたスキーマ ファイルを格納するために使用されるメモリ内スキーマ キャッシュ。これには、サブシステムに導入されたすべてのプロパティの説明が含まれます。 スキーマを記述する .propdesc 構成ファイルを再解析する必要はありません。 詳細については、「 PSRegisterPropertySchema」、「 PSUnregisterPropertySchema」、「 PSRefreshPropertySchema」を参照してください。
  • プロパティの説明を取得または操作するために使用される IPropertySystem を実装するサブシステム オブジェクト。
  • プロパティの説明に基づいて通知および操作するために使用される IPropertyDescription を実装するサブシステム オブジェクト。
  • プロパティの説明のコレクションとして使用される IPropertyDescriptionList を実装するサブシステム オブジェクト。

Note

.propdesc ファイルのルート スキーマ要素に を追加 xmlns=http://schemas.microsoft.com/windows/2006/propertydescription する必要があります。

 

スキーマを使用する理由

プロパティ自体は、型セーフではありません。 コンポーネントは、System.Author プロパティに数値を割り当てることも、System.Music.AlbumTitle プロパティに FILETIME 日付スタンプを割り当てることもできます。さらに適用やガイダンスを行わなくても、プロパティ ストアで許可されます。 そのため、プロパティを "スキーマ化" するための概念が必要でした。これにより、スキーマ サブシステムに変換されます。

主要なスキーマ パーツとは

シェル プロパティ システムで使用されるプロパティ記述スキーマは、1 つの propertyDescriptionList 要素と、このスキーマ定義形式のバージョンを示す schemaVersion 属性で構成されます。 注: 値は "1.0" である必要があります。

<!-- schema -->
    <xs:element name="schema">
      <xs:complexType>
        <xs:sequence>
          <xs:element ref="propertyDescriptionList" minOccurs="1" maxOccurs="1"/>
        </xs:sequence>
        <xs:attribute name="schemaVersion"  type="xs:string"/>
      </xs:complexType>
    </xs:element>

propertyDescriptionList は、1 つ以上の propertyDescription 要素と、publisher 属性と product 属性で構成されます。

<!-- propertyDescriptionList -->
    <xs:element name="propertyDescriptionList">
      <xs:complexType>
        <xs:sequence>
          <xs:element ref="propertyDescription" minOccurs="1" maxOccurs="unbounded"/>
        </xs:sequence>
        <xs:attribute name="publisher" type="xs:string"/>
        <xs:attribute name="product"   type="xs:string"/>
      </xs:complexType>
    </xs:element>

propertyDescription は、1 つの searchInfo 要素と 0 個または 1 個の labelInfo 要素、typeInfo 要素、displayInfo 要素、および formatIDpropIDpropstrおよび name 属性で構成されます。

システムで使用できるようにするための一意の正規プロパティ名ごとに、 propertyDescription 要素が 1 つ存在する必要があります。 文字列属性の制限は 512 文字です。 512 文字を超える値は切り捨てられます。

<!-- propertyDescription -->
    <xs:element name="propertyDescription">
      <xs:complexType>
        <xs:all>
          <xs:element name="description"    type="xs:string" minOccurs="0" maxOccurs="1"/>
          <xs:element ref="searchInfo"   minOccurs="1" maxOccurs="1"/>
          <xs:element ref="labelInfo"    minOccurs="0" maxOccurs="1"/>
          <xs:element ref="typeInfo"     minOccurs="0" maxOccurs="1"/>
          <xs:element ref="displayInfo"  minOccurs="0" maxOccurs="1"/>
        </xs:all>
        <xs:attribute name="formatID"  type="upcase-uuid" use="required""/>
        <xs:attribute name="propID"    type="xs:nonNegativeInteger" use="required""/>
        <xs:attribute name="name"      type="canonical-name" use="required"/>
      </xs:complexType>
    </xs:element>

Windows 7 の変更点

Windows 7 のプロパティの説明スキーマが変更されました。 これらは重大でない変更です。 Windows 7 でプロパティ要素または属性がサポートされなくなった場合、Windows 7 オペレーティング システムは Windows Vista の要素または属性を無視します。 同様に、Windows Vista では、新しい Windows 7 プロパティ要素または属性も無視されます。

ただし、より一貫性のあるユーザー エクスペリエンスを実現するために、Windows 7 のカスタム プロパティを更新することをお勧めします。

新しい要素と属性を次に示します。

次の要素と属性が変更されました。

次の要素と属性が削除されました。

propertyDescription

searchInfo

labelInfo

typeInfo

displayInfo

stringFormat

booleanFormat

numberFormat

dateTimeFormat

enumeratedList

drawControl

editControl

filterControl

queryControl

image