Fungsi SafeArrayGetElement (oleauto.h)
Mengambil elemen tunggal dari array.
Sintaks
HRESULT SafeArrayGetElement(
[in] SAFEARRAY *psa,
[in] LONG *rgIndices,
[out] void *pv
);
Parameter
[in] psa
Deskriptor array yang dibuat oleh SafeArrayCreate.
[in] rgIndices
Vektor indeks untuk setiap dimensi array. Dimensi paling kanan (paling tidak signifikan) adalah rgIndices[0]. Dimensi paling kiri disimpan di rgIndices[psa->cDims – 1]
.
[out] pv
Elemen array.
Nilai kembali
Fungsi ini dapat mengembalikan salah satu nilai ini.
Menampilkan kode | Deskripsi |
---|---|
|
Berhasil. |
|
Indeks yang ditentukan tidak valid. |
|
Salah satu argumen tidak valid. |
|
Memori tidak dapat dialokasikan untuk elemen . |
Keterangan
Fungsi ini memanggil SafeArrayLock dan SafeArrayUnlock secara otomatis, sebelum dan sesudah mengambil elemen . Pemanggil harus menyediakan area penyimpanan dengan ukuran yang benar untuk menerima data. Jika elemen data adalah string, objek, atau varian, fungsi menyalin elemen dengan cara yang benar.
Contoh
Contoh berikut diambil dari sampel COM Fundamentals SPoly (Cenumpt.cpp).
STDMETHODIMP CEnumPoint::Next(
ULONG celt,
VARIANT rgvar[],
ULONG * pceltFetched)
{
unsigned int i;
long ix;
HRESULT hresult;
for(i = 0; i < celt; ++i)
VariantInit(&rgvar[i]);
for(i = 0; i < celt; ++i){
// Are we at the last element?
if(m_iCurrent == m_celts){
hresult = S_FALSE;
goto LDone;
}
ix = m_iCurrent++;
// m_psa is a global variable that holds the safe array.
hresult = SafeArrayGetElement(m_psa, &ix, &rgvar[i]);
if(FAILED(hresult))
goto LError0;
}
hresult = NOERROR;
LDone:;
if (pceltFetched != NULL)
*pceltFetched = i;
return hresult;
LError0:;
for(i = 0; i < celt; ++i)
VariantClear(&rgvar[i]);
return hresult;
}
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Windows |
Header | oleauto.h |
Pustaka | OleAut32.lib |
DLL | OleAut32.dll |