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 |
---|---|
|
Ein Array, das auf dem Stapel zugeordnet ist. |
|
Ein Array, das statisch zugeordnet wird. |
|
Ein Array, das in eine -Struktur eingebettet ist. |
|
Ein Array, das möglicherweise nicht in seiner Größe geändert oder neu zugeordnet wird. |
|
Ein Array, das Datensätze enthält. Wenn festgelegt, wird im Arraydeskriptor ein Zeiger auf die IRecordInfo-Schnittstelle mit negativem Offset 4 angezeigt. |
|
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. |
|
Ein Array mit einem Variantentyp. Der Variantentyp kann mit SafeArrayGetVartype abgerufen werden. |
|
Ein Array von BSTRs. |
|
Ein Array von IUnknown*. |
|
Ein Array von IDispatch*. |
|
Ein Array von VARIANTs. |
|
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 |