驅動程式管理器是一個管理應用程式與驅動程式間通訊的函式庫。 例如,在 Microsoft Windows 平台上,驅動程式管理員是一個動態連結函式庫(DLL),由 Microsoft 撰寫,並可由可再散布的 MDAC 2.8 SP1 SDK 使用者重新分發。
驅動程式管理器主要作為應用程式撰寫者的便利,並解決了所有應用程式共有的多項問題。 這些包括根據資料來源名稱決定要載入哪個驅動程式、載入與卸載驅動程式,以及呼叫驅動程式中的函式。
要了解後者為何會成為問題,請考慮如果應用程式直接在驅動程式中呼叫函式會發生什麼。 除非應用程式直接連結到特定驅動程式,否則它必須建立一個指向該驅動程式函式的指標表,並透過指標呼叫這些函式。 使用相同程式碼於多個驅動程式同時運行時會增加複雜性。 應用程式首先必須設定一個函式指標指向正確驅動程式中的正確函式,然後透過該指標呼叫該函式。
驅動程式管理器透過提供單一位置呼叫每個函式來解決此問題。 該應用程式與驅動程式管理器連結,並在驅動程式管理器中呼叫 ODBC 函式,而非驅動程式。 應用程式會以 連線句柄來識別目標驅動程式與資料來源。 當它載入驅動程式時,驅動程式管理器會建立一個指向該驅動程式函式的指標表。 它利用應用程式傳遞的連接句柄來尋找目標驅動程式中函式的位址,並以位址呼叫該函式。
大多數情況下,驅動程式管理器只是將應用程式的函式呼叫傳給正確的驅動程式。 不過,它也實作了一些函式(如 SQLDataSources、 SQLDrivers 和 SQLGetFunctions),並執行基本的錯誤檢查。 例如,驅動管理員會檢查句柄是否為空指標、函式是否以正確順序呼叫,以及某些函式參數是否有效。 關於驅動程式管理器檢查錯誤的完整說明,請參閱每個函式的參考章節及 附錄B:ODBC狀態轉換表。
驅動管理員的最後一項主要職責是載入與卸載驅動程式。 該應用程式只會載入和卸載驅動程式管理器。 當它想使用特定驅動程式時,會在驅動程式管理器中呼叫連線函式(SQLConnect、 SQLDriverConnect 或 SQLBrowseConnect),並指定特定資料來源或驅動程式的名稱,例如「會計」或「SQL Server」。使用這個名稱,驅動程式管理器會搜尋驅動程式檔案名稱的資料來源資訊,例如 Sqlsrvr.dll。 接著載入驅動程式(假設尚未載入),將每個函式的位址存入驅動程式,並呼叫驅動程式中的連接函式,接著該函式初始化並連接到資料來源。
當應用程式完成驅動程式後,會在驅動程式管理器中呼叫 SQLDisconnect 。 驅動程式管理器會呼叫這個函式,並從資料來源斷開連結。 不過,驅動程式管理器會將驅動程式保留在記憶體中,以防應用程式重新連接。 只有當應用程式釋放該驅動程式所使用的連線,或將該連線用於其他驅動程式時,才會卸載驅動程式,且沒有其他連線使用該驅動程式。 關於驅動管理員在載入與卸載驅動程式中的角色完整說明,請參閱驅動 管理員在連接過程中的角色。