SafeArrayLock 함수(oleauto.h)

배열의 잠금 수를 증가시키고 배열 데이터에 대한 포인터를 배열 설명자의 pvData에 배치합니다.

구문

HRESULT SafeArrayLock(
  [in] SAFEARRAY *psa
);

매개 변수

[in] psa

SafeArrayCreate에서 만든 배열 설명자입니다.

반환 값

이 함수는 이러한 값 중 하나를 반환할 수 있습니다.

반환 코드 Description
S_OK
성공.
E_INVALIDARG
psa 인수가 잘못되었습니다.
E_UNEXPECTED
배열을 잠글 수 없습니다.

설명

배열 설명자의 포인터는 SafeArrayUnlock 함수가 호출될 때까지 유효합니다. SafeArrayLock에 대한 호출은 중첩될 수 있으며, 이 경우 SafeArrayUnlock에 대한 동일한 수의 호출이 필요합니다.

배열이 잠겨 있는 동안에는 삭제할 수 없습니다.

스레드 보안

SAFEARRAY 데이터 형식의 모든 공용 정적(Visual Basic에서 공유됨) 멤버는 스레드로부터 안전합니다. 인스턴스 멤버는 스레드로부터의 안전성이 보장 되지 않습니다.

예를 들어 SafeArrayLock 및 SafeArrayUnlock 함수를 사용하는 애플리케이션을 고려해 보세요. 이러한 함수가 instance 동일한 SAFEARRAY 데이터 형식의 다른 스레드에서 동시에 호출되는 경우 일관성 없는 잠금 수가 생성될 수 있습니다. 그러면 결국 SafeArrayUnlock 함수가 E_UNEXPECTED 반환됩니다. 사용자 고유의 동기화 코드를 제공하여 이를 방지할 수 있습니다.

요구 사항

요구 사항
대상 플랫폼 Windows
헤더 oleauto.h
라이브러리 OleAut32.lib
DLL OleAut32.dll