Funzione SafeArrayGetElement (oleauto.h)
Recupera un singolo elemento della matrice.
Sintassi
HRESULT SafeArrayGetElement(
[in] SAFEARRAY *psa,
[in] LONG *rgIndices,
[out] void *pv
);
Parametri
[in] psa
Descrittore di matrice creato da SafeArrayCreate.
[in] rgIndices
Vettore di indici per ogni dimensione della matrice. La dimensione più destra (meno significativa) è rgIndices[0]. La dimensione più a sinistra viene archiviata in rgIndices[psa->cDims – 1]
.
[out] pv
Elemento della matrice.
Valore restituito
Questa funzione può restituire uno di questi valori.
Codice restituito | Descrizione |
---|---|
|
Operazione completata. |
|
L'indice specificato non è valido. |
|
Uno degli argomenti non è valido. |
|
Impossibile allocare memoria per l'elemento. |
Commenti
Questa funzione chiama automaticamente SafeArrayLock e SafeArrayUnlock , prima e dopo il recupero dell'elemento. Il chiamante deve fornire un'area di archiviazione delle dimensioni corrette per ricevere i dati. Se l'elemento dati è una stringa, un oggetto o una variante, la funzione copia l'elemento nel modo corretto.
Esempio
L'esempio seguente viene tratto dall'esempio 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;
}
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Windows |
Intestazione | oleauto.h |
Libreria | OleAut32.lib |
DLL | OleAut32.dll |