DLL de traçage
La DLL qui effectue le suivi est l’un des composants principaux ODBC. La DLL de trace est actuellement fournie sous la forme d’un exemple de DLL dans le composant ODBC du Kit de développement logiciel (SDK) Windows, et a été précédemment incluse dans le Kit de développement logiciel (SDK) Microsoft Data Access Components (MDAC). Par conséquent, l’entrée, l’interface et l’exemple de code du Registre pour la DLL de trace sont disponibles. Cette DLL peut être remplacée par une DLL de trace produite par un utilisateur ODBC ou un fournisseur tiers. Une DLL de trace personnalisée doit avoir un nom différent de celui de l’exemple de DLL de trace d’origine. Les DLL de trace doivent être installées dans le répertoire système, ou elles ne sont pas chargées. Les chaîne de connexion ne seront pas passées à la DLL de trace par le Gestionnaire de pilotes.
La DLL de trace trace les arguments d’entrée, les arguments de sortie, les arguments différés, les codes de retour et les SQLSTATEs. Lorsque le suivi est activé, le Gestionnaire de pilotes appelle la DLL de trace à deux points : une fois sur l’entrée de fonction (avant la validation de l’argument) et à nouveau juste avant que la fonction ne retourne.
Lorsqu’une application appelle une fonction, le Gestionnaire de pilotes appelle une fonction de trace dans la DLL de trace avant d’appeler la fonction dans le pilote ou de traiter l’appel lui-même. Chaque fonction ODBC a une fonction de trace correspondante (précédée de Trace) identique à la fonction ODBC à l’exception du nom. Lorsque la fonction de trace est appelée, la DLL de trace capture les arguments d’entrée et retourne un code de retour. Étant donné que la DLL de trace est appelée avant que le Gestionnaire de pilotes valide les arguments, les appels de fonction non valides sont suivis, de sorte que les erreurs de transition d’état et les arguments non valides sont consignés.
Après avoir appelé la fonction de trace dans la DLL de trace, le Gestionnaire de pilotes appelle la fonction ODBC dans le pilote. Il appelle ensuite TraceReturn dans la DLL de trace. Cette fonction prend deux arguments : la valeur retournée par la DLL de trace pour la fonction de trace et le code de retour retourné par le pilote à la fonction ODBC (ou la valeur retournée par le Gestionnaire de pilotes lui-même si elle a traité la fonction). La fonction utilise la valeur retournée pour la fonction de trace pour manipuler les valeurs d’argument d’entrée capturées. Il écrit le code retourné pour la fonction ODBC dans le fichier journal (ou l’affiche dynamiquement, s’il est activé). Il déréférence les pointeurs d’argument de sortie et consigne les valeurs d’argument de sortie.