SafeArrayGetElement
9/8/2008
Essa função recupera um único elemento da matriz.
Syntax
HRESULT SafeArrayGetElement(
SAFEARRAY FAR* psa,
long FAR* rgIndices,
void FAR* pv
);
Parameters
- psa
[no] Ponteiro para uma descritor de matriz criado por SafeArrayCreate.
rgIndices
[no] Ponteiro para um vetor de índices para cada dimensão da matriz.É a dimensão (menos significativo) right-Most rgIndices[0].
A dimensão left-Most é armazenada no rgIndices[psa->cDims –1].
- Vp
[out] Void ponteiro para a localidade para local o elemento da matriz.
Return Value
Retorna os valores HRESULT mostrados a seguinte tabela.
Valor | Descrição |
---|---|
S_OK |
O sucesso. |
DISP_E_BADINDEX |
O índice especificado é inválido. |
E_INVALIDARG |
Um argumento é inválido. |
E_OUTOFMEMORY |
Não foi possível alocar memória para o elemento. |
Remarks
Chama essa função SafeArrayLock e SafeArrayUnlock automaticamente, antes e após recuperar o elemento. O chamador deve fornecer uma área armazenamento do tamanho correto para receber os dados.
Se o elemento dados é um seqüência de caracteres, objeto ou variante, a função copia o elemento da maneira correta.
Passagem inválido (e, em algumas circunstâncias NULL) ponteiros para essa função faz com que uma terminação inesperada do aplicativo.
Example
STDMETHODIMP CEnumPoint::Next(
ULONG celt,
VARIANT FAR rgvar[],
ULONG FAR* pceltFetched)
{
unsigned int i;
long ix;
HRESULT hresult;
for(i = 0; i < celt; ++i)
VariantInit(&rgvar[i]);
for(i = 0; i < celt; ++i){
if(m_iCurrent == m_celts){
HRESULT = ReportResult(0, S_FALSE, 0, 0);
goto LDone;
}
ix = m_iCurrent++;
HRESULT = SafeArrayGetElement(m_psa, &ix, &rgvar[i]);
if(FAILED(hresult))
goto LError0;
}
HRESULT = NOERROR;
LDone:;
*pceltFetched = i;
return hresult;
LError0:;
for(i = 0; i < celt; ++i)
VariantClear(&rgvar[i]);
return hresult;
}
Requirements
Header | oleauto.h |
Library | oleaut32.lib |
Windows Embedded CE | Windows CE 2.0 and later |
Windows Mobile | Windows Mobile Version 5.0 and later |
See Also
Reference
Automation Functions
SafeArrayCreate
SafeArrayLock
SafeArrayUnlock