Compartilhar via


DispInvoke

Windows Mobile SupportedWindows Embedded CE Supported

9/8/2008

Essa função automaticamente chamadas membro funções em uma interface, fornecido informações de tipo para a interface.

Syntax

HRESULT DispInvoke(
  void FAR* _this, 
  ITypeInfo FAR* ptinfo, 
  DISPID dispidMember, 
  unsigned short wFlags, 
  DISPPARAMS FAR* pparams, 
  VARIANT FAR* pvarResult, 
  EXCEPINFO pexcepinfo, 
  unsigned int FAR* puArgErr 
);

Parameters

  • _this
    [no] Ponteiro para uma implementação das IDispatch interface descrito por ptinfo.
  • ptinfo
    [no] Ponteiro para informações de tipo que descrevem a interface.
  • wFlags
    [no] Os sinalizadores que descrevem o contexto das Chamar chamar, como segue.

    Valor Descrição

    DISPATCH_METHOD

    O membro é invocado como um método.

    Se uma propriedade tiver o mesmo nome, tanto isso e o sinalizador DISPATCH_PROPERTYGET pode ser definidas.

    DISPATCH_PROPERTYGET

    O membro é recuperado como um membro propriedade ou dados.

    DISPATCH_PROPERTYPUT

    O membro é alterado como um membro propriedade ou dados.

    DISPATCH_PROPERTYPUTREF

    O membro é alterado por uma atribuída de referência, em vez atribuída uma valor.

    Este sinalizador é válido somente quando a propriedade aceita uma referência a um objeto.

  • pparams
    Ponteiro para uma estrutura que contém o seguinte:

    • Uma matriz de argumentos
    • Uma matriz de argumento DISPIDs Para nomeado argumentos
    • Contagens de número de elementos de matrizes
  • pvarResult
    [out] Ponteiro para onde o resultado é para ser armazenado, orNULL se o chamador não espera nenhum resultado.

    Este argumento é ignorado se DISPATCH_PROPERTYPUT ou DISPATCH_PROPERTYPUTREF for especificado.

  • pexcepinfo
    [out] Ponteiro para uma estrutura que contém informações exceção.

    Essa estrutura deve ser preenchida se DISP_E_EXCEPTION é retornado.

  • puArgErr
    [out] Índice dentro rgvarg do primeiro argumento que tem um erro.

    Argumentos são armazenados no pdispparams-> rgvarg em ordem inversa, portanto, o primeiro argumento é aquele com o índice mais alto na matriz.

    Este parâmetro é retornado somente quando o valor de retorno resultante é DISP_E_TYPEMISMATCH ou DISP_E_PARAMNOTFOUND.

Return Value

Retorna os valores HRESULT mostrados a seguinte tabela.

Valor Descrição

S_OK

O sucesso.

DISP_E_BADPARAMCOUNT

O número de elementos fornecidos na DISPPARAMS é diferente do número de argumentos aceitos pelo método ou propriedade.

DISP_E_BADVARTYPE

Um argumento em DISPPARAMS não é um válido variante tipo.

DISP_E_EXCEPTION

O aplicativo precisa aumentar uma exceção.

Neste maiúsculas e minúsculas, a estrutura passado pexcepinfo deve ser preenchido.

DISP_E_MEMBERNOTFOUND

O membro solicitado não existe.

DISP_E_NONAMEDARGS

Esta implementação de IDispatch dá suporte não nomeado argumentos.

DISP_E_OVERFLOW

Um argumento em DISPPARAMS não pôde ser forçado para o tipo especificado.

DISP_E_PARAMNOTFOUND

Um parâmetro identificação não corresponder a um parâmetro sobre o método.

Neste maiúsculas e minúsculas, puArgErr é definido como o primeiro argumento que contém o erro.

DISP_E_PARAMNOTOPTIONAL

Um exigido parâmetro foi omitido.

DISP_E_TYPEMISMATCH

Um ou mais argumentos não pôde ser forçados.

O índice do primeiro parâmetro com o tipo incorreto no rgvarg é retornado no puArgErr.

E_INVALIDARG

Um argumento é inválido.

E_OUTOFMEMORY

Memória insuficiente para concluir a operação.

Outros códigos de retorno

Qualquer ITypeInfo::Invoke erro pode ser retornado.

Remarks

O parâmetro Isso é um ponteiro para uma implementação da interface que está sendo adiada para. DispInvoke Cria um quadro pilha, converte no parâmetros usando padrão coercion regras, coloca-los sobre a pilha e, em seguida, chama o função de membro correto na VTBL.

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

Example

O seguinte codificar a partir de arquivo exemplo linhas implementa Lines.cpp IDispatch::Invoke Usando DispInvoke. Essa função usa m_bRaiseException Para sinalizar que ocorreu um erro durante a DispInvoke chamar.

STDMETHODIMP
CLines::Invoke(
  DISPID dispidMember,
  REFIID riid,
  LCID lcid,
  WORD wFlags,
  DISPPARAMS FAR* pdispparams,
  VARIANT FAR* pvarResult,
  EXCEPINFO FAR* pexcepinfo,
  UINT FAR* puArgErr)
{
  return DispInvoke(this,
                    m_ptinfo,
                    dispidMember, 
                    wFlags, 
                    pdispparams,
                    pvarResult,
                    pexcepinfo, 
                    puArgErr); 
}

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
IDispatch
IDispatch::GetIDsOfNames
IDispatch::Invoke