다음을 통해 공유


속성 설명 스키마 이해

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

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

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

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

속성 설명 스키마란?

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

  • 속성 설명을 정의하는 하나 이상의 .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, typeInfo, displayInfo 요소 및 formatID, propID, propstr, 그리고 이름 특성으로 구성됩니다.

시스템에서 사용할 수 있는 모든 고유한 정식 속성 이름에 대해 하나의 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에 대한 사용자 지정 속성을 업데이트하는 것이 좋습니다.

다음은 새 요소 및 특성입니다.

다음과 같은 요소와 특성이 변경되었습니다.

다음 요소와 특성이 제거되었습니다.

속성 설명

검색정보

labelInfo

typeInfo

displayInfo

문자열 형식

booleanFormat

numberFormat

dateTimeFormat

번호 목록

drawControl

편집제어

filterControl

쿼리제어

이미지