SafeArrayGetElement 함수(oleauto.h)
배열의 단일 요소를 검색합니다.
구문
HRESULT SafeArrayGetElement(
[in] SAFEARRAY *psa,
[in] LONG *rgIndices,
[out] void *pv
);
매개 변수
[in] psa
SafeArrayCreate에서 만든 배열 설명자입니다.
[in] rgIndices
배열의 각 차원에 대한 인덱스의 벡터입니다. 가장 오른쪽(가장 중요하지 않은) 차원은 rgIndices[0]입니다. 가장 왼쪽 차원은 에 rgIndices[psa->cDims – 1]
저장됩니다.
[out] pv
배열의 요소입니다.
반환 값
이 함수는 이러한 값 중 하나를 반환할 수 있습니다.
반환 코드 | Description |
---|---|
|
성공. |
|
지정한 인덱스가 잘못되었습니다. |
|
인수 중 하나가 잘못되었습니다. |
|
요소에 메모리를 할당할 수 없습니다. |
설명
이 함수는 요소를 검색하기 전과 후에 SafeArrayLock 및 SafeArrayUnlock 을 자동으로 호출합니다. 호출자는 데이터를 수신하기 위해 올바른 크기의 스토리지 영역을 제공해야 합니다. 데이터 요소가 문자열, 개체 또는 변형인 경우 함수는 요소를 올바른 방식으로 복사합니다.
예제
다음 예제는 COM Fundamentals SPoly 샘플(Cenumpt.cpp)에서 가져옵니다.
STDMETHODIMP CEnumPoint::Next(
ULONG celt,
VARIANT rgvar[],
ULONG * pceltFetched)
{
unsigned int i;
long ix;
HRESULT hresult;
for(i = 0; i < celt; ++i)
VariantInit(&rgvar[i]);
for(i = 0; i < celt; ++i){
// Are we at the last element?
if(m_iCurrent == m_celts){
hresult = S_FALSE;
goto LDone;
}
ix = m_iCurrent++;
// m_psa is a global variable that holds the safe array.
hresult = SafeArrayGetElement(m_psa, &ix, &rgvar[i]);
if(FAILED(hresult))
goto LError0;
}
hresult = NOERROR;
LDone:;
if (pceltFetched != NULL)
*pceltFetched = i;
return hresult;
LError0:;
for(i = 0; i < celt; ++i)
VariantClear(&rgvar[i]);
return hresult;
}
요구 사항
요구 사항 | 값 |
---|---|
대상 플랫폼 | Windows |
헤더 | oleauto.h |
라이브러리 | OleAut32.lib |
DLL | OleAut32.dll |