SafeArrayGetElement, fonction (oleauto.h)
Récupère un seul élément du tableau.
Syntaxe
HRESULT SafeArrayGetElement(
[in] SAFEARRAY *psa,
[in] LONG *rgIndices,
[out] void *pv
);
Paramètres
[in] psa
Descripteur de tableau créé par SafeArrayCreate.
[in] rgIndices
Vecteur d’index pour chaque dimension du tableau. La dimension la plus à droite (la moins significative) est rgIndices[0]. La dimension la plus à gauche est stockée dans rgIndices[psa->cDims – 1]
.
[out] pv
Élément du tableau.
Valeur retournée
Cette fonction peut retourner l’une de ces valeurs.
Code de retour | Description |
---|---|
|
Réussite. |
|
L’index spécifié n’est pas valide. |
|
L’un des arguments n’est pas valide. |
|
La mémoire n’a pas pu être allouée à l’élément . |
Remarques
Cette fonction appelle automatiquement SafeArrayLock et SafeArrayUnlock , avant et après la récupération de l’élément. L’appelant doit fournir une zone de stockage de la taille appropriée pour recevoir les données. Si l’élément de données est une chaîne, un objet ou une variante, la fonction copie l’élément de la manière correcte.
Exemples
L’exemple suivant est tiré de l’exemple 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;
}
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Windows |
En-tête | oleauto.h |
Bibliothèque | OleAut32.lib |
DLL | OleAut32.dll |