Общие сведения о схеме описания свойства

В этом разделе представлена схема описания свойства, используемая системой свойств оболочки.

Введение новых функций для Windows Vista и более поздних версий потребовало расширения существующей системы свойств оболочки до:

  • Поддержка расширенной и расширяемой системы описания свойств, которая предоставляет сведения о свойствах, включая отображаемые имена, тип, тип отображения, поведение сортировки и группирования, а также другие атрибуты, необходимые для представления свойств и управления ими.
  • Поддержка списка типов свойств (в сочетании с пользовательским интерфейсом, которые могут изменять эти типы в различных представлениях, таких как представление списка, область предварительного просмотра, диалоговые окна свойств и т. д.), которые могут быть связаны с различными свойствами.
  • Предоставьте списки описания свойств, которые определяют набор свойств, отображаемых в различных представлениях.
  • Предоставьте упрощенный интерфейс IPropertyStore, чтобы упростить запись обработчиков свойств и сохранение свойств в файлах.
  • Поддержка обработчиков свойств, не относящихся к файлам, для предоставления свойств в представлении.

Эти функции реализованы в архитектуре, которая предоставляет абстрактный доступ к свойствам элемента оболочки. Эта абстракция называется системой свойств оболочки.

Что такое схема описания свойства?

Подсистема схемы состоит из следующих компонентов:

  • Один или несколько файлов схемы .propdesc, определяющих описания свойств. Схема описания свойства определяется в коллекции файлов схемы XML (с помощью расширения PROPDESC) во время выполнения в системе. Эти файлы загружаются отложенно, когда они требуются для части системы свойств.
  • Кэш схем в памяти, используемый для хранения проанализированных файлов схемы, которые включают все описания свойств, представленные в подсистеме. Нет необходимости повторно использовать файлы конфигурации .propdesc, описывающие схему. Дополнительные сведения см. в разделах PSRegisterPropertySchema, PSUnregisterPropertySchema и PSRefreshPropertySchema.
  • Объект подсистемы, реализующий IPropertySystem, который используется для получения описаний свойств или работы с ним.
  • Объект подсистемы, реализующий IPropertyDescription, который используется для информирования и работы на основе описания свойства.
  • Объект подсистемы, реализующий IPropertyDescriptionList, который используется в качестве коллекции описаний свойств.

Примечание

Необходимо добавить xmlns=http://schemas.microsoft.com/windows/2006/propertydescription в корневой элемент схемы PROPDESC-файлов.

 

Зачем использовать схему?

Свойства сами по себе не являются типобезопасны. Компонент может присвоить числовое значение свойству System.Author или метку даты FILETIME свойству System.Music.AlbumTitle, и без каких-либо дальнейших указаний хранилища свойств разрешат это. Таким образом, нам нужно было понятие "схематизировать" свойства, что приводит нас к подсистеме схемы.

Что такое основные части схемы?

Схема описания свойства, используемая системой свойств оболочки, состоит из одного элемента 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 состоит из одного или нескольких элементов propertyDescription, а также атрибутов издателя и продукта.

<!-- 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 состоит из одного элемента searchInfo и нуля или одного элемента labelInfo, typeInfo и displayInfo, а также атрибутов formatID, propID, propstr и name.

Для каждого уникального канонического имени свойства, которое должно быть доступно в системе, должно быть по одному элементу propertyDescription . Строковые атрибуты имеют ограничение в 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