SafeArrayAccessData (Compact 2013)
3/26/2014
This function increments the lock count of an array and retrieves a pointer to the array data.
Syntax
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 Value
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.
Important
For readability, the following code example does not contain security checking or error handling. Do not use the following code in a production environment.
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
Header |
oleauto.h |
Library |
oleaut32.lib |
See Also
Reference
Automation Functions
SafeArrayCreate
SafeArrayGetElement
SafeArrayPutElement