Fonctions de crochet hors contexte
La liste suivante décrit les aspects clés des fonctions de hook hors contexte :
- Les fonctions de crochet hors contexte se trouvent dans l’espace d’adressage du client, que ce soit dans le corps du code ou dans une DLL.
- Les fonctions de crochet hors contexte ne sont pas mappées dans l’espace d’adressage du serveur.
- Lorsqu’un événement est déclenché, les paramètres de la fonction de hook sont marshalés au-delà des limites du processus.
- Les fonctions de hook hors contexte sont sensiblement plus lentes que les fonctions de hook en contexte en raison du marshaling.
- Le système met en file d’attente les notifications d’événements afin qu’elles arrivent de manière asynchrone (en raison du temps nécessaire pour effectuer le marshaling).
Bien que les notifications d’événements soient asynchrones, Microsoft Active Accessibility garantit que la fonction de rappel reçoit tous les événements dans l’ordre dans lequel ils sont générés.
Le composant USER du système d’exploitation alloue de la mémoire pour les événements gérés par des fonctions de hook hors contexte. La mémoire est libérée lorsque les fonctions de hook reviennent. Si une fonction de hook ne traite pas les événements assez rapidement, les ressources UTILISATEUR sont réduites, ce qui entraîne une erreur ou des temps de réponse extrêmement lents. Ces problèmes peuvent se produire si :
- Les événements sont déclenchés très rapidement.
- Le système est lent.
- La fonction de hook traite les événements lentement.
- Le client s’exécute sur Windows 9x.