驅動程式管理員是一個程式庫,可管理應用程式和驅動程式之間的通訊。 例如,在 Microsoft Windows 平台上,驅動程式管理員是由 Microsoft 撰寫的動態連結程式庫 (DLL),可由可轉散發 MDAC 2.8 SP1 SDK 的使用者轉散發。
驅動程式管理員主要是為了方便應用程式寫入器使用而存在,且能針對所有應用程式解決許多常見問題。 其中包括根據資料來源名稱決定要載入的驅動程式、載入和卸載驅動程式,以及呼叫驅動程式中的函式。
若要了解後者會發生問題的原因,請考慮應用程式直接呼叫驅動程式中的函式時會發生什麼情況。 除非應用程式直接連結至特定驅動程式,否則必須建置該驅動程式中函式的指標資料表,並以指標呼叫這些函式。 一次針對多個驅動程式使用相同程式碼,會導致複雜度提升至另一個層級。 應用程式必須先設定函式指標,以指向正確驅動程式中的正確函式,然後再透過該指標呼叫函式。
驅動程式管理員會提供單一位置來呼叫每個函式,從而解決此問題。 應用程式會連結至驅動程式管理員,並在驅動程式管理員 (而非驅動程式) 中呼叫 ODBC 函式。 應用程式會使用連線控制代碼,識別目標驅動程式和資料來源。 在載入驅動程式時,驅動程式管理員會建置該驅動程式中函式的指標資料表。 其會使用應用程式所傳遞的連線控制代碼,在目標驅動程式中尋找函式的位址,並依位址呼叫該函式。
在大部分情況下,驅動程式管理員只是將函式呼叫從應用程式傳遞至正確的驅動程式。 不過,驅動程式管理員也會實作某些函式 (SQLDataSources、SQLDrivers 和 SQLGetFunctions),並執行基本錯誤檢查。 例如,驅動程式管理員會檢查控制代碼是否為 null 指標、函式呼叫順序是否正確,以及特定函式引數是否有效。 如需驅動程式管理員所檢查的錯誤相關完整描述,請參閱每個函式的參考區段和附錄 B:ODBC 狀態轉換資料表。
最後,驅動程式管理員還扮演了一個重大角色,便是載入和卸載驅動程式。 應用程式只會載入和卸載驅動程式管理員。 若想使用特定驅動程式,應用程式會在驅動程式管理員中呼叫連線函式 (SQLConnect、SQLDriverConnect 或 SQLBrowseConnect),並指定特定資料來源或驅動程式的名稱,例如「Accounting」或「SQL Server」。驅動程式管理員會使用該名稱,在資料來源資訊中搜尋驅動程式檔案名稱,例如 Sqlsrvr.dll。 接著,其會載入驅動程式 (假設尚未載入),將每個函式的位址儲存在驅動程式中,並在驅動程式中呼叫連線函式,然後將本身初始化並連線至資料來源。
當應用程式使用完驅動程式後,就會在驅動程式管理員中呼叫 SQLDisconnect。 驅動程式管理員會在驅動程式中呼叫此函式,從而導致與資料來源的連線中斷。 不過,驅動程式管理員會將驅動程式保留在記憶體中,以防應用程式重新連線。 只有在應用程式釋放驅動程式所使用的連線,或使用不同驅動程式的連線,且沒有其他連線使用該驅動程式時,才會卸載驅動程式。 如需在載入和卸載驅動程式過程中,驅動程式管理員所扮演角色的完整描述,請參閱驅動程式管理員在連線程序中的角色。