Noções básicas sobre o esquema de descrição da propriedade

Este tópico apresenta o esquema de descrição da propriedade usado pelo sistema de propriedades shell.

A introdução de novos recursos para o Windows Vista e posteriormente exigiu que o sistema de propriedades shell existente fosse estendido para:

  • Suporte a um sistema de descrição de propriedade avançado e extensível que fornece informações sobre propriedades, incluindo nomes de exibição, tipo, tipo de exibição, comportamento de classificação e grupo e outros atributos necessários para apresentar e operar sobre as propriedades.
  • Suporte a uma lista de ações de tipos de propriedade (combinados com a interface do usuário que podem editar esses tipos em modos de exibição diferentes, como o modo de exibição de lista, painel de visualização, caixas de diálogo de propriedade e assim por diante) que podem ser associados a várias propriedades.
  • Forneça listas de descrição da propriedade, que definem o conjunto de propriedades exibidas em vários modos de exibição.
  • Forneça uma interface simplificada, IPropertyStore, para que os manipuladores de propriedades possam ser gravados com mais facilidade e, portanto, as propriedades possam ser persistidas nos arquivos.
  • Suporte para manipuladores de propriedade que não são de arquivo para expor propriedades na exibição.

Esses recursos são obtidos em uma arquitetura que fornece acesso abstrato às propriedades de um item do Shell. Essa abstração é chamada de sistema de propriedades shell.

O que é o esquema de descrição da propriedade?

O subsistema de esquema consiste no seguinte:

  • Um ou mais arquivos de esquema .propdesc que definem descrições de propriedade. O esquema de descrição da propriedade é definido em uma coleção de arquivos de esquema XML (usando a extensão de arquivo .propdesc) em runtime no sistema. Esses arquivos são carregados lentamente quando uma parte do sistema de propriedades os requer.
  • Um cache de esquema na memória usado para armazenar os arquivos de esquema analisados, que incluem todas as descrições de propriedade introduzidas no subsistema. Não é necessário analisar novamente os arquivos de configuração .propdesc que descrevem o esquema. Para obter mais informações, consulte PSRegisterPropertySchema, PSUnregisterPropertySchema e PSRefreshPropertySchema.
  • Um objeto de subsistema que implementa IPropertySystem, que é usado para obter ou trabalhar com descrições de propriedade.
  • Um objeto de subsistema que implementa IPropertyDescription, que é usado para informar e operar com base em uma descrição de propriedade.
  • Um objeto de subsistema que implementa IPropertyDescriptionList, que é usado como uma coleção de descrições de propriedade.

Observação

Você deve adicionar xmlns=http://schemas.microsoft.com/windows/2006/propertydescription ao elemento de esquema raiz dos arquivos .propdesc.

 

Por que usar um esquema?

As propriedades, por si só, não são fortemente tipados. Um componente pode atribuir um valor numérico à propriedade System.Author ou um carimbo de data FILETIME à propriedade System.Music.AlbumTitle e, sem nenhuma imposição ou orientação adicional, os repositórios de propriedades permitirão isso. Portanto, precisávamos de uma noção para "esquematizar" as propriedades, o que nos leva ao subsistema de esquema.

Quais são as principais partes de esquema?

O esquema de descrição da propriedade usado pelo sistema de propriedades shell é composto por um único elemento propertyDescriptionList , bem como um atributo schemaVersion , que indica a versão desse formato de definição de esquema. Observação: o valor deve ser "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>

A propertyDescriptionList é composta por um ou mais elementos propertyDescription , bem como atributos de fornecedor e produto .

<!-- 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>

Uma propertyDescription é composta por um elemento searchInfo e zero ou um labelInfo, typeInfo e displayInfo , bem como atributos formatID, propID, propstr e name .

Deve haver um elemento propertyDescription para cada nome de propriedade canônica exclusivo que se destina a estar disponível no sistema. Os atributos de cadeia de caracteres têm um limite de 512 caracteres. Valores com mais de 512 caracteres são truncados.

<!-- 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>

Alterações no Windows 7

O esquema de descrição da propriedade foi alterado para o Windows 7. Essas são alterações não interruptivas. Se não houver mais suporte para um elemento ou atributo de propriedade no Windows 7, o sistema operacional Windows 7 ignorará o elemento ou os atributos do Windows Vista. Da mesma forma, o Windows Vista também ignora novos elementos ou atributos de propriedade do Windows 7.

No entanto, a atualização de propriedades personalizadas para o Windows 7 é recomendada para uma experiência de usuário melhor e mais consistente.

Veja a seguir novos elementos e atributos:

Os seguintes elementos e atributos foram alterados:

Os seguintes elementos e atributos foram removidos:

Propertydescription

searchInfo

labelInfo

Typeinfo

displayInfo

Stringformat

booleanFormat

Numberformat

dateTimeFormat

enumeratedList

drawControl

editControl

filterControl

queryControl

imagem