Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Диспетчер драйверов — это библиотека, которая управляет взаимодействием между приложениями и драйверами. Например, на платформах Microsoft Windows диспетчер драйверов представляет собой библиотеку динамической компоновки (DLL), написанную корпорацией Майкрософт, и может распространяться пользователями распространяемого пакета SDK MDAC 2.8 с пакетом обновления 1 (SP1).
Диспетчер драйверов существует главным образом как удобство для разработчиков приложений и решает ряд проблем, распространенных среди всех приложений. К ним относятся определение драйвера для загрузки на основе имени источника данных, загрузки и выгрузки драйверов, а также вызов функций в драйверах.
Чтобы узнать, почему последний является проблемой, рассмотрите, что произойдет, если приложение вызывает функции непосредственно в драйвере. Если приложение не было связано непосредственно с определенным драйвером, необходимо создать таблицу указателей на функции в этом драйвере и вызвать эти функции указателем. Использование одного кода для нескольких драйверов одновременно добавит еще один уровень сложности. Сначала приложению необходимо задать указатель функции, чтобы указать правильную функцию в правильном драйвере, а затем вызвать функцию через этот указатель.
Диспетчер драйверов решает эту проблему, предоставляя одно место для вызова каждой функции. Приложение связано с диспетчером драйверов и вызывает функции ODBC в диспетчере драйверов, а не драйвере. Приложение определяет целевой драйвер и источник данных при помощи дескриптора подключения. При загрузке драйвера диспетчер драйверов создает таблицу указателей на функции в этом драйвере. Он использует дескриптор подключения, переданный приложением, для поиска адреса функции в целевом драйвере и вызова этой функции по адресу.
В большинстве случаев диспетчер драйверов просто передает вызовы функций из приложения в правильный драйвер. Однако она также реализует некоторые функции (SQLDataSources, SQLDrivers и SQLGetFunctions) и выполняет базовую проверку ошибок. Например, диспетчер драйверов проверяет, что дескрипторы не являются нулевыми указателями, что функции вызываются в правильном порядке, и что определенные аргументы функций допустимы. Полное описание ошибок, проверенных диспетчером драйверов, см. в справочном разделе для каждой функции и приложения B: таблицы перехода состояния ODBC.
Последняя основная роль диспетчера драйверов — загрузка и выгрузка драйверов. Приложение загружает и выгружает только диспетчер драйверов. Если он хочет использовать конкретный драйвер, он вызывает функцию подключения (SQLConnect, SQLDriverConnect или SQLBrowseConnect) в диспетчере драйверов и указывает имя определенного источника данных или драйвера, например "Учет" или "SQL Server". Используя это имя, диспетчер драйверов ищет сведения о источнике данных для имени файла драйвера, например Sqlsrvr.dll. Затем он загружает драйвер (если он еще не загружен), сохраняет адрес каждой функции в драйвере и вызывает функцию подключения в драйвере, которая затем инициализирует себя и подключается к источнику данных.
Когда приложение будет готово с помощью драйвера, он вызывает SQLDisconnect в диспетчере драйверов. Диспетчер драйверов вызывает эту функцию в драйвере, который отключается от источника данных. Однако диспетчер драйверов сохраняет драйвер в памяти, если приложение повторно подключается к нему. Он выгрузит драйвер, только если приложение освобождает подключение, используемое драйвером, или использует подключение для другого драйвера, а другие подключения не используют драйвер. Полное описание роли диспетчера драйверов при загрузке и выгрузке драйверов см. в разделе "Роль диспетчера драйверов" в процессе подключения.