Important:
This is retired content. This content is outdated and is no longer being maintained. It is provided as a courtesy for individuals who are still using these technologies. This content may contain URLs that were valid when originally published, but now link to sites or pages that no longer exist.
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.

Syntax

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

Parameters

cDims

[in] Number of dimensions of the array.

ppsaOut

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

Return Value

Returns the HRESULT values shown in the following table.

Value Description

S_OK

Success.

E_INVALIDARG

The psaparameter was not a valid safearray descriptor.

E_UNEXPECTED

The array could not be locked.

Remarks

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 SafeArrayAllocDatato allocate memory for the array elements.

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

Example

The following code example creates a safearray using the SafeArrayAllocDescriptorand SafeArrayAllocDatafunctions.

Copy Code
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

Header oleauto.h
Library oleaut32.lib
Windows Embedded CE Windows CE 2.0 and later
Windows Mobile Windows Mobile Version 5.0 and later

See Also