Método IMessageFilter::HandleInComingCall (objidl.h)

Fornece um único ponto de entrada para chamadas de entrada.

Esse método é chamado antes de cada invocação de método originada fora do processo atual e fornece a capacidade de filtrar ou rejeitar chamadas de entrada (ou retornos de chamada) para um objeto ou um processo.

Sintaxe

DWORD HandleInComingCall(
  [in] DWORD           dwCallType,
  [in] HTASK           htaskCaller,
  [in] DWORD           dwTickCount,
  [in] LPINTERFACEINFO lpInterfaceInfo
);

Parâmetros

[in] dwCallType

O tipo de chamada de entrada que foi recebida. Os valores possíveis são da enumeração CALLTYPE.

[in] htaskCaller

A ID do thread do chamador.

[in] dwTickCount

A contagem de tiques decorridos desde que a chamada de saída foi feita, se dwCallType não for CALLTYPE_TOPLEVEL. Se dwCallType for CALLTYPE_TOPLEVEL, dwTickCount deverá ser ignorado.

[in] lpInterfaceInfo

Um ponteiro para uma estrutura INTERFACEINFO que identifica o objeto, a interface e o método que está sendo chamado. No caso de chamadas DDE, lpInterfaceInfo pode ser NULL porque a camada DDE não retorna informações de interface.

Retornar valor

Esse método pode retornar os valores a seguir.

Código de retorno Descrição
SERVERCALL_ISHANDLED
O aplicativo pode ser capaz de processar a chamada.
SERVERCALL_REJECTED
O aplicativo não pode lidar com a chamada devido a um problema imprevisto, como indisponibilidade de rede ou se está em processo de encerramento.
SERVERCALL_RETRYLATER
O aplicativo não pode lidar com a chamada no momento. Um aplicativo pode retornar esse valor quando estiver em um estado modal controlado pelo usuário.

Comentários

Se implementado, HandleInComingCall é chamado por COM quando uma mensagem COM de entrada é recebida.

Dependendo do estado atual de um aplicativo, uma chamada é aceita e processada ou rejeitada (permanente ou temporariamente). Se SERVERCALL_ISHANDLED for retornado, o aplicativo poderá processar a chamada, embora o sucesso dependa da interface para a qual a chamada está destinada. Se a chamada não puder ser processada, COM retornará RPC_E_CALL_REJECTED.

As chamadas assíncronas e sincronizadas por entrada são expedidas mesmo que o aplicativo retorne SERVERCALL_REJECTED ou SERVERCALL_RETRYLATER.

HandleInComingCall não deve ser usado para manter as atualizações em objetos durante operações como impressão de banda. Para essa finalidade, use IViewObject::Freeze.

Você também pode usar HandleInComingCall para configurar o estado do aplicativo para que a chamada possa ser processada no futuro.

Nota Embora o parâmetro htaskCaller seja digitado como um HTASK, ele contém a ID de thread do thread de chamada. Ao implementar a interface IMessageFilter , você pode chamar a função OpenThread para obter o identificador de thread do parâmetro htaskCaller e pode chamar a função GetProcessIdOfThread para obter a ID do processo.
 

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho objidl.h

Confira também

Imessagefilter