Partager via


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

Fournit un point d’entrée unique pour les appels entrants.

Cette méthode est appelée avant chaque appel de méthode provenant de l’extérieur du processus en cours et offre la possibilité de filtrer ou de rejeter les appels entrants (ou rappels) à un objet ou à un processus.

Syntaxe

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

Paramètres

[in] dwCallType

Type d’appel entrant reçu. Les valeurs possibles proviennent de l’énumération CALLTYPE.

[in] htaskCaller

ID de thread de l’appelant.

[in] dwTickCount

Nombre de graduations écoulés depuis l’appel sortant, si dwCallType n’est pas CALLTYPE_TOPLEVEL. Si dwCallType est CALLTYPE_TOPLEVEL, dwTickCount doit être ignoré.

[in] lpInterfaceInfo

Pointeur vers une structure INTERFACEINFO qui identifie l’objet, l’interface et la méthode appelés. Dans le cas d’appels DDE, lpInterfaceInfo peut avoir la valeur NULL , car la couche DDE ne retourne pas d’informations d’interface.

Valeur retournée

Cette méthode peut retourner les valeurs suivantes.

Code de retour Description
SERVERCALL_ISHANDLED
L’application peut être en mesure de traiter l’appel.
SERVERCALL_REJECTED
L’application ne peut pas gérer l’appel en raison d’un problème imprévu, tel que l’indisponibilité du réseau, ou s’il est en cours de fin.
SERVERCALL_RETRYLATER
L’application ne peut pas gérer l’appel pour le moment. Une application peut retourner cette valeur lorsqu’elle est dans un état modal contrôlé par l’utilisateur.

Remarques

S’il est implémenté, HandleInComingCall est appelé par COM lorsqu’un message COM entrant est reçu.

Selon l’état actuel d’une application, un appel est accepté et traité ou rejeté (définitivement ou temporairement). Si SERVERCALL_ISHANDLED est retourné, l’application peut être en mesure de traiter l’appel, bien que la réussite dépend de l’interface pour laquelle l’appel est destiné. Si l’appel ne peut pas être traité, COM retourne RPC_E_CALL_REJECTED.

Les appels synchronisés en entrée et asynchrones sont distribués même si l’application retourne SERVERCALL_REJECTED ou SERVERCALL_RETRYLATER.

HandleInComingCall ne doit pas être utilisé pour bloquer les mises à jour des objets pendant des opérations telles que l’impression de bande. À cet effet, utilisez IViewObject ::Freeze.

Vous pouvez également utiliser HandleInComingCall pour configurer l’état de l’application afin que l’appel puisse être traité ultérieurement.

Note Bien que le paramètre htaskCaller soit tapé en tant que HTASK, il contient l’ID de thread du thread appelant. Lorsque vous implémentez l’interface IMessageFilter , vous pouvez appeler la fonction OpenThread pour obtenir le handle de thread à partir du paramètre htaskCaller , et vous pouvez appeler la fonction GetProcessIdOfThread pour obtenir l’ID de processus.
 

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête objidl.h

Voir aussi

IMessageFilter