다음을 통해 공유


가변 크기 데이터 구조

고정 크기 데이터 구조를 사용하여 TAPI와 애플리케이션 간에 정보를 전송하는 경우 애플리케이션은 필요한 메모리를 할당해야 합니다. 할당된 메모리 양은 적어도 데이터 구조의 고정된 부분에 대해 충분히 커야 하며 데이터 구조의 dwTotalSize 멤버에 있는 애플리케이션에 의해 설정됩니다. dwUsedSizedwNeededSize 멤버는 TAPI로 채워집니다. dwTotalSize가 고정 부분의 크기보다 작으면 LINEERR/PHONEERR_STRUCTURETOOSMALL 반환됩니다. 함수가 성공을 반환하면 고정 부분의 모든 필드가 채워집니다. dwUsedSizedwNeededSize 멤버를 비교하여 모든 변수 부분이 채워졌는지 여부와 모든 부분을 채우는 데 필요한 공간을 결정할 수 있습니다.

dwNeededSizedwUsedSize와 같으면 모든 고정 및 변수 부분이 채워집니다. dwNeededSizedwUsedSize보다 크면 일부 변수 부분이 채워졌을 수 있지만 정확히 어떤 크기의 필드가 채워졌는지는 정의되지 않습니다. 가변 부분이 잘리지 않으며, 공간 부족으로 인해 잘렸을 변수 부분은 해당하는 "Offset" 및 "Size" 파트를 모두 0으로 설정하여 표시됩니다. 둘 다 0이 아니고 오류가 반환되지 않은 경우 유효한 비정형 변수 부분 데이터의 오프셋 및 크기를 나타냅니다.

애플리케이션은 항상 함수가 성공을 반환하고 dwNeedSize가 dwUsedSize와 같을 때까지 구조체에 대한 dwNeededSize 바이트를 할당하고 표시하고 "Get" 함수 를 다시 호출하여 모든 변수 부분이 채워지게 할 수 있습니다. 이는 두 번째 시도에서 발생해야 하며, 이는 드물게 발생해야 하는 호출 간의 가변 부분 크기 변경을 야기하는 경합 조건을 제외하고 발생합니다.

참고

인코딩에 관계없이 고정 크기 구조의 모든 텍스트 문자열은 일반적인 C 문자열 처리 규칙에 따라 NULL로 종료되어야 합니다.