總線驅(qū)動器的任務(wù)之一就是枚舉總線上的設(shè)備。并為每個設(shè)備創(chuàng)建一個PDO。一旦總線驅(qū)動器程序檢查到新硬件存在,PnP管理器就創(chuàng)建一個PDO,創(chuàng)建完P(guān)DO后,PnP管理器參照注冊表中的信息查找與這個PDO相關(guān)的過濾器和功能驅(qū)動程序。系統(tǒng)安裝程序負責(zé)這些注冊表項,而驅(qū)動程序包中控制硬件安裝的INF文件負責(zé)添加其他表項。這些表項定義了過濾器和功能驅(qū)動程序在堆棧中的次序。
--------------------------------------------
1.創(chuàng)建設(shè)備
設(shè)備創(chuàng)建一般在設(shè)備管理器發(fā)現(xiàn)新設(shè)備時進行:設(shè)備管理器通過讀取驅(qū)動程序inf文件來創(chuàng)建新設(shè)備,將這個設(shè)備注冊為特定的設(shè)備接口并建立符號鏈接,這樣使操作系統(tǒng)能正確識別這個硬件。在驅(qū)動程序安裝過程中,設(shè)備管理器還會根據(jù)inf文件將驅(qū)動程序拷貝到系統(tǒng)目錄,并通過寫入相關(guān)注冊表信息建立服務(wù),使這個驅(qū)動程序能夠在系統(tǒng)啟動時被自動加載。
2.硬件資源分配
驅(qū)動程序需要知道為它們分配了那些硬件資源。常見的硬件資源有I/O端口、存儲器地址、中斷和DMA。我們可通過設(shè)備管理器中的"資源"選項來查看某個設(shè)備的資源分配情況,這些工作都是由系統(tǒng)自動完成的。當(dāng)然,如果這個設(shè)備的資源與其他設(shè)備的資源相沖突將不能正常工作,這時候必須通過設(shè)備管理器來手動配置資源。
3.串行化處理
在多處理器系統(tǒng)中,處理程序可同時在兩個不同的處理器上運行,但如果它們都試圖訪問同一硬件時,則會出現(xiàn)不可預(yù)料的結(jié)果。WDM驅(qū)動重要的功能之一就是提供一個機制,保證驅(qū)動程序的不同部分不會同時訪問相同的硬件,避免設(shè)備發(fā)生沖突。
4.訪問硬件
驅(qū)動程序在取得了I/O端口和內(nèi)存地址后就可以直接訪問硬件,但由于Windows是多任務(wù)操作系統(tǒng),在一般情況下占用處理器的時間應(yīng)小于50微秒,如果需要長時間的硬件訪問應(yīng)采用系統(tǒng)線程的方法。
5.即插即用支持
即插即用(PnP)是系統(tǒng)自動識別和適應(yīng)硬件配置改變的技術(shù)。即插即用不僅需要硬件支持同時還需要軟件支持。驅(qū)動程序是對即插即用支持很重要的部分,用戶可隨時為計算機添加和刪除設(shè)備而無需進行手工配置。微軟作為PnP規(guī)范的制定者已經(jīng)定義了相關(guān)設(shè)備和組件的工業(yè)標準,通過這些標準我們可以了解操作系統(tǒng)和驅(qū)動程序如何支持即插即用。操作系統(tǒng)和驅(qū)動程序?qū)床寮从玫闹С种饕峁┑墓δ苡凶詣幼R別已安裝的設(shè)備;硬件資源的動態(tài)分配;自動加載正確的驅(qū)動程序;在硬件環(huán)境發(fā)生變化時,向驅(qū)動程序發(fā)出通知。
6.電源管理支持
電源管理也需要軟硬件同時支持,支持PnP的驅(qū)動程序必須支持電源管理,反之亦然。WDM驅(qū)動程序和操作系統(tǒng)共同管理設(shè)備電源,維持系統(tǒng)的電源消耗并節(jié)約電量的使用。Windows 98和Windows 2000以及其他支持電源管理的操作系統(tǒng)中,計算機和其他外設(shè)被維持在可能的最低電源使用水平上來完成當(dāng)前工作,這在移動PC和筆記本電腦上顯得尤為重要。