トレース DLL
トレースを実行する DLL は、ODBC コア コンポーネントの 1 つです。 トレース DLL は現在、Windows SDK の ODBC コンポーネントのサンプル DLL として提供されており、以前は Microsoft Data Access Components (MDAC) SDK に含まれていました。 そのため、トレース DLL のレジストリ エントリ、インターフェイス、サンプル コードを使用できます。 この DLL は、ODBC ユーザーまたはサードパーティ ベンダーによって作成されたトレース DLL に置き換えることができます。 カスタム トレース DLL には、元のサンプル トレース DLL とは異なる名前を付ける必要があります。 トレース DLL はシステム ディレクトリにインストールする必要があります。そうしなければ、読み込みに失敗します。 接続文字列は、ドライバー マネージャーによってトレース DLL に渡されることはありません。
トレース DLL は、入力引数、出力引数、遅延引数、リターン コード、SQLSTATE などをトレースします。 トレースが有効になっている場合、ドライバー マネージャーは、2 つのポイントでトレース DLL を呼び出します。関数の入力時に 1 回 (引数の検証前) と、関数が戻る直前にもう 1 回呼び出されます。
アプリケーションが関数を呼び出すと、ドライバー マネージャーは、ドライバー内の関数を呼び出すか、呼び出し自体を処理する前に、トレース DLL のトレース関数を呼び出します。 各 ODBC 関数には、名前を除く ODBC 関数と 同一のトレース関数 (Trace として始まる) があります。 トレース関数が呼び出されると、トレース DLL は入力引数をキャプチャし、リターン コードを返します。 トレース DLL は、ドライバー マネージャーが引数を検証する前にが呼び出されるため、無効な関数呼び出しがトレースされ、状態遷移エラーと無効な引数がログに記録されます。
トレース DLL でトレース関数を呼び出した後、ドライバー マネージャーは、ドライバー内の ODBC 関数を呼び出します。 その後、トレース DLL の TraceReturn を呼び出します。 この関数は 2 つの引数を受け取ります。トレース関数のトレース DLL によって返される値と、ドライバーが ODBC 関数のドライバー マネージャーに返すリターン コード (または、ドライバー マネージャー自体が関数を処理した場合に返される値) です。 この関数は、トレース関数に返された値を使用して、キャプチャされた入力引数の値を操作します。 ODBC 関数に対して返されたコードをログ ファイルに書き込みます (有効になっている場合は動的に表示します)。 出力引数ポインターを逆参照し、出力引数の値をログに記録します。