SafeArrayAllocDescriptor
This function allocates memory for a safe array descriptor, allowing the creation of safe arrays that contain elements with data types other than those provided by SafeArrayCreate.
HRESULT SafeArrayAllocDescriptor(
unsigned int cDims,
SAFEARRAY FAR *FAR *ppsaOut );
Parameters
- cDims
Number of dimensions of the array. - ppsaOut
Pointer to a location in which to store the created array descriptor.
Return Values
One of the values obtained from the returned HRESULT and described in the following table is returned.
| Value | Description |
|---|---|
| S_OK | Success. |
| E_INVALIDARG | The psa parameter was not a valid safe array descriptor. |
| E_UNEXPECTED | The array could not be locked. |
Remarks
This function allows the creation of safe arrays that contain elements with data types other than those provided by SafeArrayCreate. After creating an array descriptor using SafeArrayAllocDescriptor, set the element size in the array descriptor, an call SafeArrayAllocData to allocate memory for the array elements. Passing into this function any invalid and, under some circumstances, NULL pointers will result in unexpected termination of the application.
Example
The following code example creates a safe array using the SafeArrayAllocDescriptor and SafeArrayAllocData functions.
SAFEARRAY FAR* FAR*ppsa;
unsigned int ndim = 2;
HRESULT HRESULT = SafeArrayAllocDescriptor( ndim, ppsa );
if( FAILED( HRESULT ) )
return ERR_OutOfMemory;
(*ppsa)->rgsabound[ 0 ].lLbound = 0;
(*ppsa)->rgsabound[ 0 ].cElements = 5;
(*ppsa)->rgsabound[ 1 ].lLbound = 1;
(*ppsa)->rgsabound[ 1 ].cElements = 4;
HRESULT = SafeArrayAllocData( *ppsa );
if( FAILED( HRESULT ) ) {
SafeArrayDestroyDescriptor( *ppsa )
return ERR_OutOfMemory;
}
Requirements
| Runs on | Versions | Defined in | Include | Link to |
|---|---|---|---|---|
| Windows CE OS | 2.0 and later | Oleauto.h | Oleaut32.lib |
Note This API is part of the complete Windows CE OS package as provided by Microsoft. The functionality of a particular platform is determined by the original equipment manufacturer (OEM) and some devices may not support this API.
See Also
SafeArrayAllocData, SafeArrayDestroyData, SafeArrayDestroyDescriptor
Last updated on Tuesday, July 13, 2004
© 1992-2000 Microsoft Corporation. All rights reserved.