예약 속성 식별자

예약된 속성 식별자는 속성 식별자(ID)로 사용할 수 없습니다. 0, 1 및 0x80000000 보다 크거나 같은 값을 제외한 모든 속성 식별자(ID)를 사용할 수 있습니다. 이러한 속성 식별자 값은 애플리케이션에서 사용하도록 예약되어 있습니다.

다음 표에는 예약된 속성 ID와 속성 ID가 예약된 대상에 대한 설명이 나와 있습니다.

예약된 속성 ID 설명
0 선택적 속성 집합 표시 이름 사전을 만들기 위해 예약되었습니다. 이렇게 하면 속성 집합 사용자가 형식 표시기에서 제공하는 것 외에 속성에 의미를 연결할 수 있습니다.
1 속성 집합의 문자열을 해석할 때 사용할 코드 페이지(Windows) 또는 스크립트(Macintosh)의 표시기로 예약됩니다.
속성 집합의 모든 문자열 값은 동일한 코드 페이지와 함께 저장되어야 합니다. 속성 집합 헤더(PROPERTYSETHEADER::d wOSVer)의 원래 운영 체제 값은 코드 페이지 표시기가 Windows 코드 페이지 또는 Macintosh 스크립트에 해당하는지 여부를 결정합니다.
0x80000000 속성 집합이 기록되는 로캘의 표시로 예약됩니다.
속성 집합의 기본 로캘은 시스템 기본 로캘(LOCALE_SYSTEM_DEFAULT)입니다. LOCALE_SYSTEM_DEFAULT 대한 자세한 내용은 Win32 API를 참조하세요. 기본값은 속성 집합에 로캘 표시기가 없는 경우에 사용됩니다.
0x80000003 속성 집합 동작의 지표로 예약됩니다. 이 속성 ID 값은 VT_UI4 이며 속성 집합 동작을 나타내는 DWORD 뒤에 VT_UI4 값을 포함하는 DWORD 데이터 형식으로 시작합니다.
현재 정의되는 이 값의 유일한 비트는 낮은 순서 비트(0x1)입니다. 이 비트가 설정되면 속성 ID 0으로 표시된 속성 집합 이름이 대/소문자를 구분하는 것으로 간주되어야 함을 나타냅니다. 이 비트가 설정되지 않았거나 동작 속성(ID 0x80000003)이 없으면 이름을 대/소문자를 구분하지 않는 것으로 간주해야 합니다.
0xFFFFFFFF 프로그래밍 편의성을 위해 예약되어 있습니다. 직렬화된 속성 집합에 표시되지 않아야 합니다.

높은 비트 집합(즉, 음수 값)이 있는 속성 식별자는 나중에 Microsoft에서 사용할 수 있도록 예약되어 있습니다.

예약 속성 중 0xBFFFFFFF 0x80000000 범위의 ID 값이 있는 속성은 해당 의미를 이해하지 못하는 구현에서 읽기 전용으로 간주됩니다. 예를 들어 구현이 속성 0x80000000 의미를 이해하지 못하는 경우 해당 속성을 읽지만 작성하거나 삭제하지 않도록 허용해야 합니다. 이러한 구현은 0xC0000000 범위의 속성을 0xFFFFFFFE 읽거나 쓰거나 삭제할 수 있도록 허용해야 합니다. 속성 ID 0xFFFFFFFF 예약된 값이며 직렬화된 속성 집합에 표시되지 않아야 합니다.

속성 집합 로캘

애플리케이션은 로캘을 지원하거나 기본 동작을 사용하도록 선택할 수 있습니다. 애플리케이션에서 사용자가 작업 로캘을 지정할 수 있도록 하는 것이 좋습니다. 이러한 애플리케이션은 사용자가 지정한 로캘 식별자를 속성에 작성해야 합니다. 사용자 기본 로캘(LOCALE_USER_DEFAULT)을 사용하는 애플리케이션은 속성에 사용자 기본 로캘 식별자를 작성해야 합니다. LOCALE_USER_DEFAULT 대한 자세한 내용은 Win32 API를 참조하세요.

참고

IPropertySetStorage 인터페이스를 사용하여 속성 집합을 만들면 사용자 기본 로캘이 로캘 표시기로 자동으로 작성됩니다.

또한 애플리케이션은 로캘이 애플리케이션 로캘, 사용자 로캘 또는 시스템 로캘이 아닌 외부 개체의 경우를 처리해야 합니다.

로캘 표시기 속성은 VT_U14 형식이므로 VT_U14 포함하는 DWORD 와 Win32 API에 정의된 LCID(로캘 식별자)가 포함된 DWORD 로 구성됩니다.

코드 페이지 표시기

속성 집합의 작성자가 아닌 애플리케이션이 집합의 문자열 형식 속성을 변경하는 경우 코드 페이지 표시기를 검사하고 다음 작업 중 하나를 수행해야 합니다.

  • 코드 페이지 표시기에서 지정한 형식으로 문자열을 작성합니다.
  • 를 바꾸고 다시 작성하여 코드 페이지를 변경합니다.

애플리케이션이 이 표시기를 인식할 수 없는 경우 속성을 수정하면 안 됩니다. 속성 집합의 모든 작성자는 코드 페이지 표시기를 작성해야 합니다. 그러나 코드 페이지 표시기가 없는 경우 판독기 컴퓨터의 일반적인 코드 페이지를 가정해야 합니다.

참고

IPropertySetStorage 인터페이스를 사용하여 속성 집합을 만들면 코드 페이지 표시기가 자동으로 작성됩니다.

코드 페이지에 대한 가능한 값은 Win32 API(자세한 내용은 GetACP 함수 참조) 및 인사이드 매킨토시 볼륨 VI, 페이지 14-111에 제공됩니다. (일부 언어 및 국가에서는 이러한 리소스를 사용할 수 없습니다.) 예를 들어 코드 페이지 US ANSI는 0x04E4(10진수 1252)로 표시되고 유니코드의 코드 페이지는 0x04B0(10진수 1200)입니다.

가능한 경우 유니코드 코드 페이지를 사용하고 스토리지 및 검색 중에 멀티바이트 <-> 유니코드 변환을 방지하기 위해 VT_LPSTR 대신 VT_LPWSTR 사용하는 것이 좋습니다. 모든 속성 집합에 동일한 코드 페이지를 사용하는 것이 전 세계적으로 상호 운용 가능한 속성 집합을 달성하는 유일한 방법입니다. 유니코드 또는 유니코드가 아닌 코드 페이지에서 VT_LPSTR 또는 VT_BSTR 시작 시의 개수는 문자 수가 아니라 바이트 수라는 점에 유의해야 합니다. 이 바이트 수에는 문자열의 끝에 있는 하나 또는 두 개의 0바이트(문자열의 NULL 종결자)가 포함됩니다.

속성 ID 1은 VT_I2 형식이며 VT_I2 값과 코드 페이지를 나타내는 SHORT가 포함된 DWORD로 시작합니다.