DispInvoke
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.
dispidMember
[no] Identifica o membro.Uso IDispatch::GetIDsOfNames ou documentação do objeto para obter o DISPID.
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