속성 설명 스키마 이해

이 항목에서는 Shell 속성 시스템에서 사용하는 속성 설명 스키마를 소개합니다.

Windows Vista 이상에 대한 새로운 기능을 도입하려면 기존 셸 속성 시스템을 다음으로 확장해야 했습니다.

  • 표시 이름, 형식, 표시 유형, 정렬 및 그룹 동작 및 속성에 대해 표시 및 작동하는 데 필요한 기타 특성을 포함하여 속성에 대한 정보를 제공하는 풍부하고 확장 가능한 속성 설명 시스템을 지원합니다.
  • 다양한 속성과 연결할 수 있는 속성 형식의 스톡 목록(목록 보기, 미리 보기 창, 속성 대화 상자 등과 같은 다양한 보기에서 해당 형식을 편집할 수 있는 UI와 결합)을 지원합니다.
  • 다양한 보기에 표시되는 속성 집합을 정의하는 속성 설명 목록을 제공합니다.
  • 간소화된 인터페이스인 IPropertyStore를 제공하므로 속성 처리기를 더 쉽게 작성할 수 있으므로 파일에 속성을 유지할 수 있습니다.
  • 뷰에서 속성을 노출하는 파일이 아닌 속성 처리기를 지원합니다.

이러한 기능은 셸 항목의 속성에 대한 추상적인 액세스를 제공하는 아키텍처에서 구현됩니다. 이 추상화는 Shell 속성 시스템이라고 합니다.

속성 설명 스키마란?

스키마 하위 시스템은 다음으로 구성됩니다.

  • 속성 설명을 정의하는 하나 이상의 .propdesc 스키마 파일입니다. 속성 설명 스키마는 시스템의 런타임에 XML 스키마 파일 컬렉션(.propdesc 파일 확장명 사용)에 정의됩니다. 이러한 파일은 속성 시스템의 일부가 필요할 때 지연 로드됩니다.
  • 하위 시스템에 도입된 모든 속성 설명을 포함하는 구문 분석된 스키마 파일을 저장하는 데 사용되는 메모리 내 스키마 캐시입니다. 스키마를 설명하는 .propdesc 구성 파일을 다시 분석할 필요가 없습니다. 자세한 내용은 PSRegisterPropertySchema, PSUnregisterPropertySchemaPSRefreshPropertySchema를 참조하세요.
  • 속성 설명을 가져오거나 작업하는 데 사용되는 IPropertySystem을 구현하는 하위 시스템 개체입니다.
  • 속성 설명에 따라 알리고 작동하는 데 사용되는 IPropertyDescription을 구현하는 하위 시스템 개체입니다.
  • 속성 설명의 컬렉션으로 사용되는 IPropertyDescriptionList를 구현하는 하위 시스템 개체입니다.

참고

.propdesc 파일의 루트 스키마 요소에 를 추가 xmlns=http://schemas.microsoft.com/windows/2006/propertydescription 해야 합니다.

 

스키마를 사용하는 이유

속성 자체는 형식이 안전하지 않습니다. 구성 요소는 System.Author 속성에 숫자 값을 할당하거나 FILETIME 날짜 스탬프를 System.Music.AlbumTitle 속성에 할당할 수 있으며, 추가 적용 또는 지침 없이 속성 저장소에서 이를 허용합니다. 따라서 스키마 하위 시스템에 제공하는 속성을 "스키마화"하는 개념이 필요했습니다.

주요 스키마 부분은 무엇인가요?

Shell 속성 시스템에서 사용하는 속성 설명 스키마는 단일 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 및 0개 또는 1개의 labelInfo, typeInfodisplayInfo 요소뿐만 아니라 formatID, propID, propstrname 특성으로 구성됩니다.

시스템에서 사용할 수 있는 모든 고유한 정식 속성 이름에 대해 하나의 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