Partager via


Fonction SafeArrayAccessData (oleauto.h)

Incrémente le nombre de verrous d’un tableau et récupère un pointeur vers les données du tableau.

Syntaxe

HRESULT SafeArrayAccessData(
  [in]  SAFEARRAY  *psa,
  [out] void HUGEP **ppvData
);

Paramètres

[in] psa

Descripteur de tableau créé par SafeArrayCreate.

[out] ppvData

Données du tableau.

Valeur retournée

Cette fonction peut retourner l’une de ces valeurs.

Code de retour Description
S_OK
Réussite.
E_INVALIDARG
L’argument psa n’est pas valide.
E_UNEXPECTED
Impossible de verrouiller le tableau.

Remarques

Après avoir appelé SafeArrayAccessData, vous devez appeler la fonction SafeArrayUnaccessData pour déverrouiller le tableau.

Exemples

L’exemple suivant trie un tableau sécurisé d’une dimension qui contient des BSTR en accédant directement aux éléments du tableau. Cette approche est plus rapide que l’utilisation de SafeArrayGetElement et SafeArrayPutElement.

long i, j, min; 
BSTR bstrTemp;
BSTR HUGEP *pbstr;
HRESULT hr;

// Get a pointer to the elements of the array.
hr = SafeArrayAccessData(psa, (void HUGEP**)&pbstr);
if (FAILED(hr))
goto error;

// Selection sort.
for (i = 0; i < psa->rgsabound.cElements-1; i++)
{
   min = i;
   for (j = i+1; j < psa->rgsabound.cElements; j++)
   {
      if (wcscmp(pbstr[j], pbstr[min]) < 0)
         min = j; 
   }

   // Swap array[min] and array[i].
   bstrTemp = pbstr[min];
   pbstr[min] = pbstr[i];
   pbstr[i] = bstrTemp;

}

SafeArrayUnaccessData(psa);

Configuration requise

Condition requise Valeur
Plateforme cible Windows
En-tête oleauto.h
Bibliothèque OleAut32.lib
DLL OleAut32.dll