SafeArrayAllocDescriptor Function

Allocates memory for a safe array descriptor.

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

cDims

The number of dimensions of the array.

ppsaOut

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

The return value obtained from the returned HRESULT is one of the following.

Return value

Meaning

S_OK

Success.

E_INVALIDARG

The argument ppsaOut was not a valid pointer to a safe array descriptor.

E_UNEXPECTED

The array could not be locked.

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.

The following example creates a safe array using the SafeArrayAllocDescriptor and SafeArrayAllocData Function functions.

SAFEARRAY *psa;
unsigned int ndim =  2;
HRESULT hresult = SafeArrayAllocDescriptor( ndim, &psa );
if( FAILED( hresult ) )
   return ERR_OutOfMemory;
(psa)->rgsabound[ 0 ].lLbound = 0;
(psa)->rgsabound[ 0 ].cElements = 5;
(psa)->rgsabound[ 1 ].lLbound = 1;
(psa)->rgsabound[ 1 ].cElements = 4;
hresult = SafeArrayAllocData( psa );
if( FAILED( hresult ) ) {
   SafeArrayDestroyDescriptor( psa )
   return ERR_OutOfMemory;
}
Show:
© 2014 Microsoft