This structure holds a safe array and its attributes.
At a Glance
Header file: | Oaidl.h |
Windows CE versions: | 2.0 and later |
Syntax
typedef struct FARSTRUCT tagSAFEARRAY {
unsigned short cDims;
unsigned short fFeatures;
unsigned short cbElements;
unsigned short cLocks;
unsigned long handle;
void HUGEP *pvData;
SAFEARRAYBOUND rgsabound[1];
} SAFEARRAY;
Members
cDims
Count of dimensions in this array.
fFeatures
Flags used by the SafeArray routines.
cbElements
Size of an element of the array. Does not include size of pointed-to data.
cLocks
Number of times the array has been locked without corresponding unlock.
cbElements
Unused.
Clocks
Unused.
handle
Unused, but kept for compatibility.
pvData;
Void pointer to the data.
rgsabound
One bound for each dimension.
Remarks
The array rgsabound is stored with the left-most dimension in rgsabound[0]
and the right-most dimension in rgsabound[
cDims – 1]
. If an array was specified in a C-like syntax as a [2][5], it would have two elements in the rgsabound
vector. Element 0 has an lLbound of 0 and a cElements of 2. Element 1 has an lLbound of 0 and a cElements of 5.
The fFeatures flags describe attributes of an array that can affect how the array is released. This allows freeing the array without referencing its containing variant. The bits are accessed using the following constants:
#define FADF_AUTO 0x0001 // Array is allocated on the stack.
#define FADF_STATIC 0x0002 // Array is statically allocated.
#define FADF_EMBEDDED 0x0004 // Array is embedded in a structure.
#define FADF_FIXEDSIZE 0x0010 // Array may not be resized or
// reallocated.
#define FADF_BSTR 0x0100 // An array of BSTRs.
#define FADF_UNKNOWN 0x0200 // An array of IUnknown*.
#define FADF_DISPATCH 0x0400 // An array of IDispatch*.
#define FADF_VARIANT 0x0800 // An array of VARIANTs.
#define FADF_RESERVED 0xF0E8 // Bits reserved for future use.