안전한 배열 사용에 대한 모범 사례

Microsoft UI 자동화 API의 많은 인터페이스 메서드는 SAFEARRAY 데이터 형식의 안전 배열이라는 인수를 사용합니다. 이 항목에서는 UI 자동화 애플리케이션에서 안전한 배열을 사용하는 모범 사례를 설명합니다.

클라이언트

UI 자동화 클라이언트 API 메서드와 함께 사용되는 모든 안전한 배열은 0부터 시작하는 1차원 배열입니다. UI 자동화 클라이언트 메서드에 대한 안전한 배열을 만들려면 SafeArrayCreateVector 함수를 사용하고 안전한 배열에서 읽고 안전한 배열에 쓰려면 SafeArrayGetElementSafeArrayPutElement 함수를 사용합니다. 안전 배열 사용을 마치면 안전 배열을 만들거나 UI 자동화 클라이언트 메서드에서 수신했는지 여부에 관계없이 SafeArrayDestroy 함수를 사용하여 항상 삭제합니다.

GetCurrentPropertyValue와 같은 속성 검색 메서드를 포함하여 여러 UI 자동화 메서드는 POINT 또는 UiaRect 구조를 포함할 수 있는 VARIANTs를 검색합니다. POINT는 인덱스 0의 x 멤버와 인덱스 1의 y 멤버를 사용하여 doubles(VT_R8)의 안전한 배열로 VARIANT로 압축됩니다. 마찬가지로 UiaRect는 각각 인덱스 0에서 3까지의 왼쪽, 위쪽, 너비높이 멤버가 있는 doubles의 안전한 배열로 VARIANT로 압축됩니다. UiaRect 구조체 배열의 경우 안전 배열에는 각 UiaRect에 대해 4개의 doubles의 순차 배열이 포함됩니다. 첫 번째 UiaRect왼쪽, 위쪽, 너비높이 멤버는 인덱스 0~3을 차지하고, 두 번째 사각형의 멤버는 인덱스 4~7을 차지합니다.

IUIAutomation 인터페이스에는 SAFEARRAY와 다양한 다른 데이터 형식 간에 변환하기 위한 다음 메서드가 포함되어 있습니다.

메서드 설명
IUIAutomation::IntNativeArrayToSafeArray 정수 배열을 SAFEARRAY로 변환합니다.
IUIAutomation::IntSafeArrayToNativeArray 정수의 SAFEARRAY 를 배열로 변환합니다.
IUIAutomation::SafeArrayToRectNativeArray 사각형 좌표가 포함된 SAFEARRAYRECT 형식의 배열로 변환합니다.

 

공급자

공급자는 공급자에서 정보를 검색하기 위해 호출을 UI 자동화 여러 인터페이스 메서드를 구현해야 합니다. 이 정보는 여러 번 값 배열로 구성됩니다. UI 자동화 배열을 반환하려면 공급자가 배열을 SAFEARRAY 구조체로 압축해야 합니다. 배열 요소는 예상된 데이터 형식이어야 하며 예상 순서대로 표시되어야 합니다.

개념

UI 자동화 속성 개요

UI 자동화 기본 사항