Grundlegendes zum Eigenschaftenbeschreibungsschema

In diesem Thema wird das Eigenschaftenbeschreibungsschema vorgestellt, das vom Shell-Eigenschaftensystem verwendet wird.

Die Einführung neuer Features für Windows Vista und höher erforderte, dass das vorhandene Shell-Eigenschaftensystem auf Folgendes erweitert wurde:

  • Unterstützen Sie ein umfassendes und erweiterbares Eigenschaftenbeschreibungssystem, das Informationen zu Eigenschaften wie Anzeigenamen, Typ, Anzeigetyp, Sortier- und Gruppenverhalten und anderen Attributen bereitstellt, die zum Darstellen und Verarbeiten der Eigenschaften erforderlich sind.
  • Unterstützung einer Bestandsliste von Eigenschaftentypen (in Kombination mit einer Benutzeroberfläche, die diese Typen in verschiedenen Ansichten wie Listenansicht, Vorschaubereich, Eigenschaftendialogen usw.) bearbeiten kann, die verschiedenen Eigenschaften zugeordnet werden können.
  • Geben Sie Eigenschaftenbeschreibungslisten an, die den Satz von Eigenschaften definieren, die in verschiedenen Ansichten angezeigt werden.
  • Stellen Sie eine vereinfachte Schnittstelle ( IPropertyStore) bereit, damit Eigenschaftenhandler einfacher geschrieben werden können und Eigenschaften in Dateien beibehalten werden können.
  • Unterstützung für Nicht-Datei-Eigenschaftenhandler, um Eigenschaften in der Ansicht verfügbar zu machen.

Diese Features werden in einer Architektur erreicht, die abstrakten Zugriff auf die Eigenschaften eines Shellelements bietet. Diese Abstraktion wird als Shell-Eigenschaftssystem bezeichnet.

Was ist das Eigenschaftenbeschreibungsschema?

Das Schemasubsystem besteht aus folgenden Komponenten:

  • Mindestens eine PROPDESC-Schemadatei, die Eigenschaftenbeschreibungen definieren. Das Eigenschaftenbeschreibungsschema wird zur Laufzeit auf dem System in einer Auflistung von XML-Schemadateien (mit der Dateierweiterung .propdesc) definiert. Diese Dateien werden verzögert geladen, wenn ein Teil des Eigenschaftensystems sie erfordert.
  • Ein In-Memory-Schemacache, der zum Speichern der analysierten Schemadateien verwendet wird, die alle Eigenschaftenbeschreibungen enthalten, die in das Subsystem eingeführt wurden. Es ist nicht erforderlich, die PROPDESC-Konfigurationsdateien zu analysieren, die das Schema beschreiben. Weitere Informationen finden Sie unter PSRegisterPropertySchema, PSUnregisterPropertySchema und PSRefreshPropertySchema.
  • Ein Subsystemobjekt, das IPropertySystem implementiert, das zum Abrufen oder Arbeiten mit Eigenschaftenbeschreibungen verwendet wird.
  • Ein Subsystemobjekt, das IPropertyDescription implementiert, das verwendet wird, um basierend auf einer Eigenschaftenbeschreibung zu informieren und zu arbeiten.
  • Ein Subsystemobjekt, das IPropertyDescriptionList implementiert, das als Auflistung von Eigenschaftenbeschreibungen verwendet wird.

Hinweis

Sie müssen dem Stammschemaelement Ihrer PROPDESC-Dateien hinzufügen xmlns=http://schemas.microsoft.com/windows/2006/propertydescription .

 

Gründe für die Verwendung eines Schemas

Eigenschaften an sich sind nicht typsicher. Eine Komponente kann der System.Author-Eigenschaft einen numerischen Wert oder einen FILETIME-Datumsstempel der System.Music.AlbumTitle-Eigenschaft zuweisen, und die Eigenschaftenspeicher lassen dies ohne weitere Erzwingung oder Anleitung zu. Daher brauchten wir einen Begriff, um die Eigenschaften zu "schematisieren", was uns zum Schemasubsystem bringt.

Was sind die wichtigsten Schemateile?

Das vom Shell-Eigenschaftensystem verwendete Eigenschaftenbeschreibungsschema besteht aus einem einzelnen propertyDescriptionList-Element sowie einem schemaVersion-Attribut , das die Version dieses Schemadefinitionsformats angibt. Hinweis: Der Wert muss "1,0" sein.

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

Die propertyDescriptionList besteht aus einem oder mehreren propertyDescription-Elementen sowie publisher - und product-Attributen .

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

Eine propertyDescription besteht aus einem searchInfo - und null- oder einem labelInfo-, TypeInfo- und displayInfo-Element sowie den Attributen formatID, propID, propstr und name .

Für jeden eindeutigen kanonischen Eigenschaftennamen, der im System verfügbar sein soll, sollte ein propertyDescription-Element vorhanden sein. Die Zeichenfolgenattribute sind auf 512 Zeichen beschränkt. Werte, die länger als 512 Zeichen sind, werden abgeschnitten.

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

Änderungen für Windows 7

Das Eigenschaftenbeschreibungsschema wurde für Windows 7 geändert. Dies sind keine Breaking Changes. Wenn ein Eigenschaftselement oder Attribut in Windows 7 nicht mehr unterstützt wird, ignoriert das Windows 7-Betriebssystem das Element oder die Attribute von Windows Vista. Ebenso ignoriert Windows Vista neue Windows 7-Eigenschaftselemente oder -Attribute.

Das Aktualisieren benutzerdefinierter Eigenschaften für Windows 7 wird jedoch empfohlen, um eine bessere und konsistentere Benutzererfahrung zu erzielen.

Im Folgenden werden neue Elemente und Attribute aufgeführt:

Die folgenden Elemente und Attribute haben sich geändert:

Die folgenden Elemente und Attribute wurden entfernt:

propertyDescription

searchInfo

labelInfo

Typeinfo

displayInfo

Stringformat

booleanFormat

Numberformat

dateTimeFormat

enumeratedList

drawControl

editControl

filterControl

queryControl

image