Поделиться через


Библиотека DLL трассировки

Библиотека DLL, которая выполняет трассировку, является одним из основных компонентов ODBC. Библиотека DLL трассировки в настоящее время предоставляется в качестве примера библиотеки DLL в компоненте ODBC пакета SDK для Windows и ранее была включена в пакет SDK microsoft Data Access Components (MDAC). Таким образом, доступны записи реестра, интерфейс и пример кода для библиотеки DLL трассировки. Эту библиотеку DLL можно заменить библиотекой DLL трассировки, созданной пользователем ODBC или сторонним поставщиком. Пользовательская библиотека DLL трассировки должна быть присвоена другому имени, отличному от исходной библиотеки DLL трассировки. Библиотеки DLL трассировки должны быть установлены в системном каталоге, или они не будут загружаться. Строка подключения не будут переданы в библиотеку DLL трассировки диспетчером драйверов.

Библиотека DLL трассировки отслеживает входные аргументы, выходные аргументы, отложенные аргументы, коды возврата и SQLSTATEs. Если трассировка включена, диспетчер драйверов вызывает библиотеку DLL трассировки в две точки: один раз после записи функции (перед проверкой аргумента) и еще раз перед возвратом функции.

Когда приложение вызывает функцию, диспетчер драйверов вызывает функцию трассировки в библиотеке DLL трассировки перед вызовом функции в драйвере или обработке самого вызова. Каждая функция ODBC имеет соответствующую функцию трассировки (префиксированную с трассировкой), идентичную функции ODBC, за исключением имени. Когда функция трассировки вызывается, библиотека DLL трассировки записывает входные аргументы и возвращает возвращаемый код. Так как библиотека DLL трассировки вызывается перед проверкой аргументов диспетчером драйверов, отслеживаются недопустимые вызовы функций, поэтому регистрируются ошибки перехода состояния и недопустимые аргументы.

После вызова функции трассировки в библиотеке DLL трассировки диспетчер драйверов вызывает функцию ODBC в драйвере. Затем он вызывает TraceReturn в библиотеке DLL трассировки. Эта функция принимает два аргумента: значение, возвращаемое библиотекой DLL трассировки для функции трассировки, и возвращаемый драйвером код, возвращаемый драйвером для функции ODBC (или значение, возвращаемое самим диспетчером драйверов, если он обработал функцию). Функция использует значение, возвращаемое для функции трассировки, для управления захваченными входными значениями аргументов. Он записывает код, возвращенный для функции ODBC, в файл журнала (или отображает его динамически, если это включено). Он разыменовывает указатели выходного аргумента и регистрирует значения выходных аргументов.