Compartilhar via


SafeArrayGetElement

Windows Mobile SupportedWindows Embedded CE Supported

9/8/2008

Essa função recupera um único elemento da matriz.

Syntax

HRESULT SafeArrayGetElement(
  SAFEARRAY FAR* psa, 
  long FAR* rgIndices, 
  void FAR* pv 
);

Parameters

  • psa
    [no] Ponteiro para uma descritor de matriz criado por SafeArrayCreate.
  • rgIndices
    [no] Ponteiro para um vetor de índices para cada dimensão da matriz.

    É a dimensão (menos significativo) right-Most rgIndices[0].

    A dimensão left-Most é armazenada no rgIndices[psa->cDims –1].

  • Vp
    [out] Void ponteiro para a localidade para local o elemento da matriz.

Return Value

Retorna os valores HRESULT mostrados a seguinte tabela.

Valor Descrição

S_OK

O sucesso.

DISP_E_BADINDEX

O índice especificado é inválido.

E_INVALIDARG

Um argumento é inválido.

E_OUTOFMEMORY

Não foi possível alocar memória para o elemento.

Remarks

Chama essa função SafeArrayLock e SafeArrayUnlock automaticamente, antes e após recuperar o elemento. O chamador deve fornecer uma área armazenamento do tamanho correto para receber os dados.

Se o elemento dados é um seqüência de caracteres, objeto ou variante, a função copia o elemento da maneira correta.

Passagem inválido (e, em algumas circunstâncias NULL) ponteiros para essa função faz com que uma terminação inesperada do aplicativo.

Example

STDMETHODIMP CEnumPoint::Next(
  ULONG celt,
  VARIANT FAR rgvar[],
  ULONG FAR* pceltFetched)
{
  unsigned int i;
  long ix;
  HRESULT hresult;
  for(i = 0; i < celt; ++i)
    VariantInit(&rgvar[i]);
  for(i = 0; i < celt; ++i){
    if(m_iCurrent == m_celts){
    HRESULT = ReportResult(0, S_FALSE, 0, 0);
      goto LDone;
  }
    ix = m_iCurrent++;
    HRESULT = SafeArrayGetElement(m_psa, &ix, &rgvar[i]);
    if(FAILED(hresult))
      goto LError0;
  }
  HRESULT = NOERROR;
LDone:;
  *pceltFetched = i;
  return hresult;
LError0:;
  for(i = 0; i < celt; ++i)
    VariantClear(&rgvar[i]);
  return hresult;
}

Requirements

Header oleauto.h
Library oleaut32.lib
Windows Embedded CE Windows CE 2.0 and later
Windows Mobile Windows Mobile Version 5.0 and later

See Also

Reference

Automation Functions
SafeArrayCreate
SafeArrayLock
SafeArrayUnlock