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


Библиотека 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, в файл журнала (или отображает его динамически, если это включено). Он разыменовывает указатели выходного аргумента и регистрирует значения выходных аргументов.