SafeArrayAccessData (Windows CE 5.0)

Send Feedback

This function increments the lock count of an array and retrieves a pointer to the array data.

HRESULT SafeArrayAccessData( SAFEARRAY FAR* psa,void HUGEP* FAR* ppvData );

Parameters

  • psa
    [in] Pointer to an array descriptor created by SafeArrayCreate.
  • ppvData
    [in] On exit, pointer to a pointer to the array data.

Return Values

Returns the HRESULT values shown in the following table.

Value Description
S_OK Success.
E_INVALIDARG The psa parameter was not a valid safearray descriptor.
E_UNEXPECTED The array could not be locked.

Remarks

Passing invalid (and under some circumstances NULL) pointers to this function causes an unexpected termination of the application.

Example

The following code example sorts a safearray of one dimension that contains BSTRs by accessing the array elements directly. This approach is faster than using SafeArrayGetElement and 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* FAR*)&pBSTR);
if (FAILED(hr))
goto error;

// Bubble sort.
cElements = lUBound–lLBound+1; 
for (i = 0; i < cElements–1; i++)
{
  min = i;
  for (j = i+1; j < 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);

Requirements

OS Versions: Windows CE 2.0 and later.
Header: Oleauto.h.
Link Library: Oleaut32.lib.

See Also

Automation Functions | SafeArrayCreate | SafeArrayGetElement | SafeArrayPutElement

Send Feedback on this topic to the authors

Feedback FAQs

© 2006 Microsoft Corporation. All rights reserved.