Utilisation d’objets de rappel

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

Les objets de rappel sont inscrits auprès des clients. Au maximum, une instance de chacune des trois interfaces de rappel peut être inscrite auprès de chaque client (les versions Unicode et ASCII d’un nombre d’interfaces en tant que même interface).

Lorsqu’un client est créé, le moteur mémorise le thread dans lequel il a été créé. Le moteur utilise ce même thread chaque fois qu’il effectue un appel à un rappel instance inscrit 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 retour de DispatchCallbacks . Si le thread est le même thread que celui utilisé pour démarrer la session du débogueur, 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 et les applications du débogueur des événements et des modifications apportées au moteur et à la cible. Une implémentation d’IDebugEventCallbacks peut être inscrite auprès d’un client à l’aide de SetEventCallbacks. L’implémentation actuelle inscrite auprès d’un client est disponible à l’aide de GetEventCallbacks. Le nombre de rappels d’événements inscrits sur tous les clients est disponible à l’aide de GetNumberEventCallbacks.

Pour plus d’informations 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 et applications du débogueur. Une implémentation d’IDebugInputCallbacks peut être inscrite auprès d’un client à l’aide de SetInputCallbacks. L’implémentation actuelle inscrite auprès d’un client est disponible à l’aide de GetInputCallbacks. Le nombre de rappels d’entrée inscrits sur tous les clients est disponible à l’aide de GetNumberInputCallbacks.

Pour plus d’informations sur la façon dont le moteur gère l’entrée, 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 et applications du débogueur. Une implémentation d’IDebugOutputCallbacks peut être inscrite auprès d’un client à l’aide de SetOutputCallbacks. L’implémentation actuelle inscrite auprès d’un client est disponible à l’aide de GetOutputCallbacks. Le nombre de rappels de sortie inscrits sur tous les clients est disponible à l’aide de GetNumberOutputCallbacks.

Pour plus d’informations sur la façon dont le moteur gère la sortie, consultez Entrée et Sortie.

Note 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é.