SafeArrayAccessData-Funktion (oleauto.h)

Erhöht die Sperranzahl eines Arrays und ruft einen Zeiger auf die Arraydaten ab.

Syntax

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

Parameter

[in] psa

Ein arraydeskriptor, der von SafeArrayCreate erstellt wurde.

[out] ppvData

Die Arraydaten.

Rückgabewert

Diese Funktion kann einen dieser Werte zurückgeben.

Rückgabecode BESCHREIBUNG
S_OK
Erfolg.
E_INVALIDARG
Das Argument psa ist ungültig.
E_UNEXPECTED
Das Array konnte nicht gesperrt werden.

Hinweise

Nachdem Sie SafeArrayAccessData aufgerufen haben, müssen Sie die Funktion SafeArrayUnaccessData aufrufen, um das Array zu entsperren.

Beispiele

Im folgenden Beispiel wird ein sicheres Array einer Dimension sortiert, das BSTRs enthält, indem direkt auf die Arrayelemente zugegriffen wird. Dieser Ansatz ist schneller als die Verwendung von SafeArrayGetElement und 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);

Anforderungen

Anforderung Wert
Zielplattform Windows
Kopfzeile oleauto.h
Bibliothek OleAut32.lib
DLL OleAut32.dll