Was this page helpful?
Your feedback about this content is important. Let us know what you think.
Additional feedback?
1500 characters remaining
MSDN Library
Information
The topic you requested is included in another documentation set. For convenience, it's displayed below. Choose Switch to see the topic in its original location.

SafeArrayAllocDescriptor

Windows Mobile 6.5
A version of this page is also available for
4/8/2010

This function allocates memory for a safearray descriptor, allowing the creation of safearrays that contain elements with data types other than those provided by SafeArrayCreate.


HRESULT SafeArrayAllocDescriptor( 
  unsigned int cDims, 
  SAFEARRAY FAR* FAR* ppsaOut 
); 

cDims

[in] Number of dimensions of the array.

ppsaOut

[out] Pointer to a location in which to store the created array descriptor.

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.

This function allows the creation of safearrays 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 and call SafeArrayAllocData to allocate memory for the array elements.

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

The following code example creates a safearray 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;
}

Headeroleauto.h
Libraryoleaut32.lib
Windows Embedded CEWindows CE 2.0 and later
Windows MobileWindows Mobile Version 5.0 and later

Community Additions

Show:
© 2015 Microsoft