Partager via


Utilisation d’objets de rappel

Il existe trois interfaces de rappel de type COM utilisées par le moteur : IDebugEventCallbacks pour notifier les extensions de débogueur et les applications de modifications apportées au moteur ou à la cible, IDebugInputCallbacks pour demander une entrée et IDebugOutputCallbacks pour l’envoi d’une sortie.

Les objets de rappel sont inscrits auprès des clients. Une instance au maximum de chacune des trois interfaces de rappel peut être inscrite auprès de chaque client (les versions Unicode et ASCII d’une interface sont considérées comme une seule et même interface).

Lorsqu’un client est créé, le moteur se souvient du thread dans lequel il a été créé. Le moteur utilise ce même thread chaque fois qu’il effectue un appel à une instance de rappel inscrite auprès du client. Si le thread est en cours d’utilisation, le moteur met en file d’attente les appels qu’il doit effectuer. Pour permettre au moteur d’effectuer ces appels, la méthode DispatchCallbacks doit être appelée chaque fois que le thread d’un client est inactif. La méthode ExitDispatch entraîne le renvoie de DispatchCallbacks. Si le thread est le même que celui utilisé pour démarrer la session du débogueur, alors le moteur peut effectuer les appels de rappel pendant la méthode WaitForEvent et DispatchCallbacks n’a pas besoin d’être appelé.

La méthode FlushCallbacks indique au moteur d’envoyer toutes les sorties mises en mémoire tampon aux rappels de sortie.

Objets de rappel d’événements

L’interface IDebugEventCallbacks est utilisée par le moteur pour notifier les extensions du débogueur et les applications des événements et des modifications apportées au moteur et à la cible. Une implémentation de IDebugEventCallbacks peut être inscrite auprès du client avec SetEventCallbacks. L’implémentation en cours inscrite auprès d’un client se trouve avec GetEventCallbacks. Le nombre de rappels d’événements inscrits auprès de tous les clients se trouve avec GetNumberEventCallbacks.

Pour en savoir plus sur la façon dont le moteur gère les événements, consultez Surveillance des événements.

Objets de rappel d’entrée

L’interface IDebugInputCallbacks est utilisée par le moteur pour demander l’entrée des extensions du débogueur et des applications. Une implémentation de IDebugInputCallbacks peut être inscrite auprès du client avec SetInputCallbacks. L’implémentation en cours inscrite auprès d’un client se trouve avec GetInputCallbacks. Le nombre de rappels d’entrée inscrits auprès de tous les clients se trouve avec GetNumberInputCallbacks.

Pour en savoir plus sur la façon dont le moteur gère les entrées, consultez Entrée et Sortie.

Objets de rappel de sortie

L’interface IDebugOutputCallbacks est utilisée par le moteur pour envoyer la sortie aux extensions du débogueur et aux applications. Une implémentation de IDebugOutputCallbacks peut être inscrite auprès du client avec SetOutputCallbacks. L’implémentation en cours inscrite auprès d’un client se trouve avec GetOutputCallbacks. Le nombre de rappels de sortie inscrits auprès de tous les clients se trouve avec GetNumberOutputCallbacks.

Pour en savoir plus sur la façon dont le moteur gère les sorties, consultez Entrée et Sortie.

Remarque : Comme c’est généralement le cas pour les objets COM, le moteur appelle IUnknown ::AddRef sur un objet COM de rappel lorsqu’il est inscrit auprès d’un client, et IUnknown ::Release lorsque l’objet est remplacé ou que le client est supprimé.