SAFEARRAY 結構 (oaidl.h)
表示安全陣列。
語法
typedef struct tagSAFEARRAY {
USHORT cDims;
USHORT fFeatures;
ULONG cbElements;
ULONG cLocks;
PVOID pvData;
SAFEARRAYBOUND rgsabound[1];
} SAFEARRAY;
成員
cDims
維度的數目。
fFeatures
標誌。
值 | 意義 |
---|---|
|
在堆疊上配置的陣列。 |
|
靜態配置的陣列。 |
|
內嵌在 結構的陣列。 |
|
無法重設大小或重新配置的陣列。 |
|
包含記錄的陣列。 設定時,陣列描述元中的負位移 4 會有 IRecordInfo 介面的指標。 |
|
具有 IID 識別介面的陣列。 設定時,安全陣列描述元中會有負位移 16 的 GUID。 只有在同時設定FADF_DISPATCH或FADF_UNKNOWN時,才會設定旗標。 |
|
具有變體類型的陣列。 可以使用 SafeArrayGetVartype 來擷取變體類型。 |
|
BSTR 的陣列。 |
|
IUnknown* 的陣列。 |
|
IDispatch*的陣列。 |
|
VULT 的陣列。 |
|
保留供日後使用的位。 |
cbElements
數位專案的大小。
cLocks
陣列在未對應解除鎖定的情況下鎖定的次數。
pvData
資料。
rgsabound[1]
每個維度都有一個系結。
備註
陣列 rgsabound 會以 rgsabound [0] 中最左邊的維度和 中 rgsabound[cDims - 1]
最右邊的維度儲存。 如果在類似 C 的語法中指定數位做為 [2][5],則 rgsabound 向量中有兩個元素。 元素 0 的 lLbound 為 0, 而 cElements 為 2。 元素 1 的 lLbound 為 0, 而 cElements 為 5。
fFeatures 旗標描述可能會影響數位釋放方式的數位屬性。 fFeatures 欄位描述儲存在 SAFEARRAY 中的數據類型,以及如何配置數位。 這允許釋放陣列,而不參考其包含的變體。
執行緒安全性
SAFEARRAY 數據類型的所有公用靜態成員都是安全線程。 實例成員不保證是安全線程。
例如,請考慮使用 SafeArrayLock 和 SafeArrayUnlock 函式的應用程式。 如果從相同 SAFEARRAY 數據類型實例上的不同線程同時呼叫這些函式,可能會建立不一致的鎖定計數。 這最終會導致 SafeArrayUnlock 函式傳回E_UNEXPECTED。 您可以藉由提供自己的同步程式代碼來防止這種情況。
規格需求
需求 | 值 |
---|---|
標頭 | oaidl.h |