실제 속성은 속성 식별자/오프셋 쌍 속성 집합 값의 테이블을 따릅니다. 각 속성은 DWORD, 그 뒤에 데이터 형식 값으로 저장됩니다.
형식 표시기 및 관련 값은 PROPVARIANT 구조에 설명되어 있습니다.
모든 형식/값 쌍은 32비트 경계에서 시작해야 합니다. 따라서 32비트 경계에서 후속 쌍을 정렬하기 위해 null 바이트를 사용하여 값을 따를 수 있습니다.
다음 예제 코드는 바이트 수가 지정된 경우 32비트 경계에 정렬하는 데 필요한 바이트 수를 계산합니다.
cbAdd = (((cbCurrent + 3) >> 2) << 2) - cbCurrent ;
값의 벡터 내에서 32비트보다 작은 단순 스칼라 값의 각 반복은 32비트 맞춤이 아닌 자연 맞춤에 맞춰야 합니다. 실제로 이는 VT_UI1, VT_UI2, VT_I2및 VT_BOOL(1-바이트 또는 2 바이트 자연 맞춤 포함) 형식에만 중요합니다. 다른 모든 형식에는 4 바이트 자연 맞춤이 있습니다. 일부 형식(예: VT_R8)은 실제로 8 바이트 자연 맞춤을 가지지만 4 바이트 맞춤이 있는 것처럼 저장됩니다.
형식 표시기가 VT_I2 | VT_VECTOR 속성 값에는 다음이 포함됩니다.
- DWORD 요소 수입니다.
- null 패딩이 없는 압축된 2바이트 정수 시퀀스입니다.
중요하다
벡터 속성 요소의 일부로 저장된 32비트 개수 또는 속성 형식도 32비트 정렬되어야 합니다.
형식 식별자 VT_LPSTR | VT_VECTOR 속성 값에는 다음이 포함됩니다.
- DWORD 요소 수(DWORDcElems)입니다.
- 문자열 시퀀스(charrgch[]), 각각 앞에 길이 개수 DWORD 뒤에 null 패딩을 추가하여 32비트 경계로 반올림할 수 있습니다.