Función SafeArrayGetElement (oleauto.h)
Recupera un único elemento de la matriz.
Sintaxis
HRESULT SafeArrayGetElement(
[in] SAFEARRAY *psa,
[in] LONG *rgIndices,
[out] void *pv
);
Parámetros
[in] psa
Descriptor de matriz creado por SafeArrayCreate.
[in] rgIndices
Vector de índices para cada dimensión de la matriz. La dimensión más derecha (menos significativa) es rgIndices[0]. La dimensión de la parte izquierda se almacena en rgIndices[psa->cDims – 1]
.
[out] pv
Elemento de la matriz.
Valor devuelto
Esta función puede devolver uno de estos valores.
Código devuelto | Descripción |
---|---|
|
Correcto. |
|
El índice especificado no es válido. |
|
Uno de los argumentos no es válido. |
|
No se pudo asignar memoria para el elemento . |
Comentarios
Esta función llama automáticamente a SafeArrayLock y SafeArrayUnlock , antes y después de recuperar el elemento. El autor de la llamada debe proporcionar un área de almacenamiento del tamaño correcto para recibir los datos. Si el elemento de datos es una cadena, un objeto o una variante, la función copia el elemento de la manera correcta.
Ejemplos
El ejemplo siguiente se toma del ejemplo SPoly de aspectos básicos com (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;
}
Requisitos
Requisito | Value |
---|---|
Plataforma de destino | Windows |
Encabezado | oleauto.h |
Library | OleAut32.lib |
Archivo DLL | OleAut32.dll |