Freigeben über


Ablaufverfolgungs-DLL

Die DLL, die die Ablaufverfolgung durchführt, ist eine der ODBC-Kernkomponenten. Die Ablaufverfolgungs-DLL wird derzeit als Beispiel-DLL in der ODBC-Komponente des Windows SDK bereitgestellt und war früher das Microsoft Data Access Components (MDAC)-SDK enthalten. Daher sind der Registrierungseintrag, die Schnittstelle und der Beispielcode für die Ablaufverfolgungs-DLL verfügbar. Diese DLL kann durch eine Ablaufverfolgungs-DLL ersetzt werden, die entweder von einem ODBC-Benutzer oder einem Drittanbieter erstellt wird. Eine benutzerdefinierte Ablaufverfolgungs-DLL sollte einen anderen Namen als die ursprüngliche Beispielablaufverfolgungs-DLL erhalten. Ablaufverfolgungs-DLLs müssen im Systemverzeichnis installiert sein, oder sie können nicht geladen werden. Die Verbindungszeichenfolge s werden vom Treiber-Manager nicht an die Ablaufverfolgungs-DLL übergeben.

Die Ablaufverfolgungs-DLL verfolgt Eingabeargumente, Ausgabeargumente, verzögerte Argumente, Rückgabecodes und SQLSTATEs. Wenn die Ablaufverfolgung aktiviert ist, ruft der Treiber-Manager die Ablaufverfolgungs-DLL an zwei Punkten auf: einmal nach Funktionseingabe (vor Argumentüberprüfung) und erneut, bevor die Funktion zurückgegeben wird.

Wenn eine Anwendung eine Funktion aufruft, ruft der Treiber-Manager eine Ablaufverfolgungsfunktion in der Ablaufverfolgungs-DLL auf, bevor die Funktion im Treiber aufgerufen oder der Aufruf selbst verarbeitet wird. Jede ODBC-Funktion verfügt über eine entsprechende Ablaufverfolgungsfunktion (mit dem Präfix Trace), die mit der ODBC-Funktion mit Ausnahme des Namens identisch ist. Wenn die Ablaufverfolgungsfunktion aufgerufen wird, erfasst die Ablaufverfolgungs-DLL die Eingabeargumente und gibt einen Rückgabecode zurück. Da die Ablaufverfolgungs-DLL aufgerufen wird, bevor der Treiber-Manager Argumente überprüft, werden ungültige Funktionsaufrufe nachverfolgt, sodass Zustandsübergangsfehler und ungültige Argumente protokolliert werden.

Nach dem Aufrufen der Ablaufverfolgungsfunktion in der Ablaufverfolgungs-DLL ruft der Treiber-Manager die ODBC-Funktion im Treiber auf. Anschließend wird TraceReturn in der Ablaufverfolgungs-DLL aufgerufen. Diese Funktion verwendet zwei Argumente: den Wert, der von der Ablaufverfolgungs-DLL für die Ablaufverfolgungsfunktion zurückgegeben wird, und den vom Treiber an den Treiber-Manager für die ODBC-Funktion zurückgegebenen Wert (oder den Wert, der vom Treiber-Manager selbst zurückgegeben wird, wenn sie die Funktion verarbeitet hat). Die Funktion verwendet den für die Ablaufverfolgungsfunktion zurückgegebenen Wert, um erfasste Eingabeargumentwerte zu bearbeiten. Er schreibt den für die ODBC-Funktion zurückgegebenen Code in die Protokolldatei (oder zeigt ihn dynamisch an, wenn dies aktiviert ist). Sie leitet die Ausgabeargumentzeiger ab und protokolliert die Ausgabeargumentwerte.