다음을 통해 공유


속성 관리

모든 속성은 속성 식별자(속성 집합 내에서 고유), 값의 형식 및 자체를 나타내는 변형 형식(VT 또는 VarType) 태그로 구성됩니다. 변형 형식 태그는 값에 있는 데이터의 표현을 설명합니다. 또한 필수 숫자 속성 식별자(ID)를 사용하는 대신 속성을 식별하는 데 사용할 수 있는 문자열 이름을 속성에 할당할 수도 있습니다. 속성을 만들고 관리하기 위해 COM은 IPropertyStorage 인터페이스를 정의합니다.

IPropertyStorage 인터페이스에는 속성 또는 속성 이름의 배열을 읽고 쓰는 메서드가 포함되어 있습니다. 인터페이스에는 동일한 이름의 IStorage 메서드와 유사한 CommitRevert 메서드가 포함됩니다. 속성 집합의 CLSID(클래스 식별자)를 설정하고, 집합과 연결된 시간을 설정하고, 속성 집합에 대한 통계를 가져올 수 있는 유틸리티 메서드가 있습니다. 마지막으로 Enum 메서드는 열거자를 만들고 해당 IEnumSTATPROPSTG 인터페이스에 대한 포인터를 반환합니다. 이 인터페이스의 메서드를 호출하여 개체에서 STATPROPSTG 구조를 열거할 수 있습니다. 이 구조체는 현재 속성 집합의 모든 속성에 대한 정보를 제공합니다.

다음은 속성을 나타내는 방법의 예입니다. 속성 집합의 특정 속성에 동물의 과학적 이름이 있는 경우 해당 이름은 0으로 끝나는 문자열로 저장될 수 있습니다. 이름과 함께 저장하면 값이 0으로 끝나는 문자열임을 나타내는 형식 표시기가 됩니다. 이러한 속성에는 다음과 같은 특성이 있을 수 있습니다.

속성 ID 문자열 식별자 유형 표시기 표시된 값
02 PID_ANIMALNAME VT_LPWSTR 0으로 끝나는 유니코드 문자열
03 PID_LEGCOUNT VT_I2 WORD

 

FMTID(형식 식별자)를 통해 식별되는 속성 집합 형식을 인식하는 모든 애플리케이션은 PID_ANIMALNAME 식별자가 있는 속성을 보고, 0으로 끝나는 문자열인지 확인하고, 값을 읽고 쓸 수 있습니다. 애플리케이션에서 IPropertyStorage::ReadMultiple 을 호출하여 속성 집합의 일부 또는 전부를 읽을 수 있지만(포인터를 처음 가져온 경우) 애플리케이션은 속성 집합을 해석하는 방법을 알고 있어야 합니다.

속성 값은 PROPVARIANT 형식의 instance 속성 인터페이스를 통해 전달됩니다.

이러한 저장된(영구) 속성과 런타임 속성을 구분하는 것이 중요합니다. 변형 형식 값 상수에는 VT_ 시작하는 이름이 있습니다. 그러나 유효한 PROPVARIANT 집합은 Automation 및 ActiveX 컨트롤에 사용되는 VARIANT 집합과 완전히 동일하지는 않습니다.

두 구조체 간의 유일한 차이점은 각각에 허용되는 VT_(Variant Type/VarType) 태그 집합입니다. VARIANT 및 PROPVARIANT 모두에서 특정 속성 형식을 사용할 수 있는 경우 형식 태그(VT_ 값)는 항상 동일한 값을 가집니다. 또한 지정된 VT_ 값의 경우 VARIANT 및 PROPVARIANT에 사용되는 메모리 내 표현은 동일합니다. 이 방법을 모두 종합하면 형식 시스템이 허용되지 않는 형식 태그를 catch하는 동시에 지식이 있는 클라이언트가 적절한 경우 포인터 캐스트를 구현할 수 있습니다.

자세한 내용은 속성 스토리지 고려 사항 섹션을 참조하세요.