Condividi tramite


Funzione SafeArrayAccessData (oleauto.h)

Incrementa il numero di blocchi di una matrice e recupera un puntatore ai dati della matrice.

Sintassi

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

Parametri

[in] psa

Descrittore di matrice creato da SafeArrayCreate.

[out] ppvData

Dati della matrice.

Valore restituito

Questa funzione può restituire uno di questi valori.

Codice restituito Descrizione
S_OK
Operazione completata.
E_INVALIDARG
L'argomento psa non è valido.
E_UNEXPECTED
Impossibile bloccare la matrice.

Commenti

Dopo aver chiamato SafeArrayAccessData, è necessario chiamare la funzione SafeArrayUnaccessData per sbloccare la matrice.

Esempio

Nell'esempio seguente viene ordinata una matrice sicura di una dimensione che contiene le route BST accedendo direttamente agli elementi della matrice. Questo approccio è più veloce rispetto all'uso di SafeArrayGetElement e 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);

Requisiti

Requisito Valore
Piattaforma di destinazione Windows
Intestazione oleauto.h
Libreria OleAut32.lib
DLL OleAut32.dll