Structure SAFEARRAY (oaidl.h)
Représente un tableau sécurisé.
Syntaxe
typedef struct tagSAFEARRAY {
USHORT cDims;
USHORT fFeatures;
ULONG cbElements;
ULONG cLocks;
PVOID pvData;
SAFEARRAYBOUND rgsabound[1];
} SAFEARRAY;
Membres
cDims
Nombre de dimensions.
fFeatures
Drapeaux.
Valeur | Signification |
---|---|
|
Tableau alloué sur la pile. |
|
Tableau alloué de manière statique. |
|
Tableau incorporé dans une structure. |
|
Tableau qui ne peut pas être redimensionné ou réaffecté. |
|
Tableau qui contient des enregistrements. Lorsqu’il est défini, un pointeur vers l’interface IRecordInfo se trouve au décalage négatif 4 dans le descripteur de tableau. |
|
Tableau qui a une interface d’identification IID. Une fois défini, il y a un GUID au décalage négatif 16 dans le descripteur de tableau sécurisé. L’indicateur n’est défini que lorsque FADF_DISPATCH ou FADF_UNKNOWN est également défini. |
|
Tableau qui a un type variant. Le type de variante peut être récupéré avec SafeArrayGetVartype. |
|
Tableau de BSTR. |
|
Tableau d’IUnknown*. |
|
Tableau d’IDispatch*. |
|
Tableau de VARIANTs. |
|
Bits réservés pour une utilisation ultérieure. |
cbElements
Taille d’un élément de tableau.
cLocks
Nombre de fois que le tableau a été verrouillé sans déverrouillage correspondant.
pvData
Données.
rgsabound[1]
Une limite pour chaque dimension.
Remarques
Le tableau rgsabound est stocké avec la dimension la plus à gauche dans rgsabound[0] et la dimension la plus à droite dans rgsabound[cDims - 1]
. Si un tableau a été spécifié dans une syntaxe de type C en tant que [2][5], il aurait deux éléments dans le vecteur rgsabound . L’élément 0 a une valeur lLbound de 0 et un élément cElements de 2. L’élément 1 a un lLbound de 0 et un cElements de 5.
Les indicateurs fFeatures décrivent les attributs d’un tableau qui peuvent affecter la façon dont le tableau est libéré. Le champ fFeatures décrit le type de données stocké dans safeARRAY et la façon dont le tableau est alloué. Cela permet de libérer le tableau sans référencer sa variante contenante.
Cohérence de thread
Tous les membres statiques publics du type de données SAFEARRAY sont thread safe. Il n’est pas garanti que les membres de l’instance soient thread safe.
Par exemple, considérez une application qui utilise les fonctions SafeArrayLock et SafeArrayUnlock . Si ces fonctions sont appelées simultanément à partir de threads différents sur le même type de données SAFEARRAY instance, un nombre de verrous incohérent peut être créé. La fonction SafeArrayUnlock retourne alors E_UNEXPECTED. Vous pouvez empêcher cela en fournissant votre propre code de synchronisation.
Configuration requise
Condition requise | Valeur |
---|---|
En-tête | oaidl.h |