Condividi tramite


Metodo IMessageFilter::HandleInComingCall (objidl.h)

Fornisce un singolo punto di ingresso per le chiamate in ingresso.

Questo metodo viene chiamato prima di ogni chiamata al metodo proveniente dall'esterno del processo corrente e fornisce la possibilità di filtrare o rifiutare chiamate in ingresso (o callback) a un oggetto o a un processo.

Sintassi

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

Parametri

[in] dwCallType

Tipo di chiamata in ingresso ricevuta. I valori possibili provengono dall'enumerazione CALLTYPE.

[in] htaskCaller

ID thread del chiamante.

[in] dwTickCount

Numero di tick trascorso dal momento che è stata effettuata la chiamata in uscita, se dwCallType non è CALLTYPE_TOPLEVEL. Se dwCallType è CALLTYPE_TOPLEVEL, dwTickCount deve essere ignorato.

[in] lpInterfaceInfo

Puntatore a una struttura INTERFACEINFO che identifica l'oggetto, l'interfaccia e il metodo da chiamare. Nel caso di chiamate DDE, lpInterfaceInfo può essere NULL perché il livello DDE non restituisce informazioni sull'interfaccia.

Valore restituito

Questo metodo può restituire i valori seguenti.

Codice restituito Descrizione
SERVERCALL_ISHANDLED
L'applicazione potrebbe essere in grado di elaborare la chiamata.
SERVERCALL_REJECTED
L'applicazione non può gestire la chiamata a causa di un problema imprevisto, ad esempio l'indisponibilità della rete o se si trova nel processo di terminazione.
SERVERCALL_RETRYLATER
L'applicazione non può gestire la chiamata in questo momento. Un'applicazione potrebbe restituire questo valore quando si trova in uno stato modale controllato dall'utente.

Commenti

Se implementato, HandleInComingCall viene chiamato da COM quando viene ricevuto un messaggio COM in ingresso.

A seconda dello stato corrente di un'applicazione, una chiamata viene accettata e elaborata o rifiutata (in modo permanente o temporaneo). Se SERVERCALL_ISHANDLED viene restituito, l'applicazione può essere in grado di elaborare la chiamata, anche se l'esito positivo dipende dall'interfaccia per cui viene destinata la chiamata. Se la chiamata non può essere elaborata, COM restituisce RPC_E_CALL_REJECTED.

Le chiamate sincronizzate e asincrone di input vengono inviate anche se l'applicazione restituisce SERVERCALL_REJECTED o SERVERCALL_RETRYLATER.

HandleInComingCall non deve essere usato per contenere gli aggiornamenti agli oggetti durante operazioni come la stampa a banda. A tale scopo, usare IViewObject::Freeze.

È anche possibile usare HandleInComingCall per configurare lo stato dell'applicazione in modo che la chiamata possa essere elaborata in futuro.

Nota Anche se il parametro htaskCaller viene digitato come HTASK, contiene l'ID thread del thread chiamante. Quando si implementa l'interfaccia IMessageFilter , è possibile chiamare la funzione OpenThread per ottenere l'handle del thread dal parametro htaskCaller e è possibile chiamare la funzione GetProcessIdOfThread per ottenere l'ID processo.
 

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione objidl.h

Vedi anche

IMessageFilter