Freigeben über


SAFEARRAY-Struktur (oaidl.h)

Stellt ein sicheres Array dar.

Syntax

typedef struct tagSAFEARRAY {
  USHORT         cDims;
  USHORT         fFeatures;
  ULONG          cbElements;
  ULONG          cLocks;
  PVOID          pvData;
  SAFEARRAYBOUND rgsabound[1];
} SAFEARRAY;

Member

cDims

Die Anzahl der Dimensionen.

fFeatures

Flaggen.

Wert Bedeutung
FADF_AUTO
0x0001
Ein Array, das auf dem Stapel zugeordnet ist.
FADF_STATIC
0x0002
Ein Array, das statisch zugeordnet wird.
FADF_EMBEDDED
0x0004
Ein Array, das in eine -Struktur eingebettet ist.
FADF_FIXEDSIZE
0x0010
Ein Array, das möglicherweise nicht in seiner Größe geändert oder neu zugeordnet wird.
FADF_RECORD
0x0020
Ein Array, das Datensätze enthält. Wenn festgelegt, wird im Arraydeskriptor ein Zeiger auf die IRecordInfo-Schnittstelle mit negativem Offset 4 angezeigt.
FADF_HAVEIID
0x0040
Ein Array, das über eine IID-Identifikationsschnittstelle verfügt. Wenn festgelegt, gibt es eine GUID mit negativem Offset 16 im sicheren Arraydeskriptor. Das Flag wird nur festgelegt, wenn FADF_DISPATCH oder FADF_UNKNOWN ebenfalls festgelegt ist.
FADF_HAVEVARTYPE
0x0080
Ein Array mit einem Variantentyp. Der Variantentyp kann mit SafeArrayGetVartype abgerufen werden.
FADF_BSTR
0x0100
Ein Array von BSTRs.
FADF_UNKNOWN
0x0200
Ein Array von IUnknown*.
FADF_DISPATCH
0x0400
Ein Array von IDispatch*.
FADF_VARIANT
0x0800
Ein Array von VARIANTs.
FADF_RESERVED
0xF008
Für die zukünftige Verwendung reservierte Bits.

cbElements

Die Größe eines Arrayelements.

cLocks

Die Anzahl der Male, die das Array ohne entsprechende Aufhebung der Sperre gesperrt wurde.

pvData

Die Daten.

rgsabound[1]

Ein gebundener für jede Dimension.

Hinweise

Das Array rgsabound wird mit der ganz links bezogenen Dimension in rgsabound[0] und der ganz rechtssten Dimension in rgsabound[cDims - 1]gespeichert. Wenn ein Array in einer C-ähnlichen Syntax als [2][5] angegeben würde, hätte es zwei Elemente im rgsabound-Vektor . Element 0 hat eine lLbound von 0 und ein cElements von 2. Element 1 hat eine lLbound von 0 und ein cElements von 5.

Die fFeatures-Flags beschreiben Attribute eines Arrays, die sich auf die Freigabe des Arrays auswirken können. Das Feld fFeatures beschreibt, welche Art von Daten in SAFEARRAY gespeichert wird und wie das Array zugeordnet wird. Dies ermöglicht das Freigeben des Arrays, ohne auf seine enthaltende Variante zu verweisen.

Threadsicherheit

Alle öffentlichen statischen Member des SAFEARRAY-Datentyps sind threadsicher. Instanzmember sind nicht garantiert threadsicher.

Betrachten Sie beispielsweise eine Anwendung, die die Funktionen SafeArrayLock und SafeArrayUnlock verwendet. Wenn diese Funktionen gleichzeitig von verschiedenen Threads auf demselben SAFEARRAY-Datentyp instance aufgerufen werden, kann eine inkonsistente Sperranzahl erstellt werden. Dies führt schließlich dazu, dass die SafeArrayUnlock-Funktion E_UNEXPECTED zurückgibt. Sie können dies verhindern, indem Sie Ihren eigenen Synchronisierungscode bereitstellen.

Anforderungen

Anforderung Wert
Header oaidl.h