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
S_OK
Correcto.
DISP_E_BADINDEX
El índice especificado no es válido.
E_INVALIDARG
Uno de los argumentos no es válido.
E_OUTOFMEMORY
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