Fonctions de raccordement hors contexte
La liste suivante présente les principaux aspects des fonctions de hook hors contexte :
- Les fonctions de hook hors contexte se trouvent dans l’espace d’adressage du client, qu’il s’agisse du corps du code ou d’une DLL.
- Les fonctions de raccordement 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 entre les limites du processus.
- Les fonctions de hook hors contexte sont sensiblement plus lentes que les fonctions de hook in-context 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 elles sont générées.
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 raccordement retournent. Si une fonction de hook ne traite pas les événements assez rapidement, les ressources USER 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 raccordement traite les événements lentement.
- Le client s’exécute sur Windows 9x.