現今的周邊裝置必須是 硬體可配置的,其驅動程式必須是 軟體可設定的。
如果裝置可以接受系統硬體資源的不同指派,例如 I/O 埠號,而不需要進行實體修改,則裝置是硬體可設定的。 例如,如果一組熱插拔隨插即用磁碟連接在獨立磁碟備援陣列 (RAID) 配置中,使用者可以在系統執行時交換磁碟。 如果裝置是硬體可設定的,則其驅動程式無法包含裝置硬體資源的硬式編碼、系統相依值。
如果出現以下情況,驅動程式是軟體可設定的:
它可以動態接收和更改其設備的硬件資源。
支援隨插即用的驅動程式不包含裝置硬體資源的硬式編碼值,驅動程式也不會輪詢裝置以判斷其資源指派。 相反地,系統會動態地將資源指派給裝置,然後將資源值提供給驅動程式。
編寫時未對其它可能位於驅動程式堆疊上下的驅動程式作出任何假設。
例如,磁碟的較低層級裝置驅動程式設計必須足夠靈活,才能支援多個高階檔案系統驅動程式所實作的多個檔案系統,可能在單一電腦上。
此外,如果電腦有足夠的大容量存儲,則同一個低層級磁碟驅動程式不得干擾中繼驅動程式在檔案系統內對容錯的支援(實作為鏡像分割區、條帶集或磁碟區集)。
PnP 管理員和每個 PnP 硬體匯流排驅動程式會一起運作,為特定類型的 I/O 匯流排提供平臺硬體與系統軟體之間的介面。 PnP 管理器會建置 裝置樹狀結構,其中包含代表系統上所有裝置(包括匯流排)的裝置節點。 針對每個裝置,PnP 管理員會維護兩個清單:
裝置能夠使用的 硬體資源 清單。
實際指派給裝置的硬體資源清單。
裝置驅動程式可協助 PnP 管理員建立這些清單,這些清單會維護在登錄中。 當裝置新增至系統或從系統中移除時,PnP 管理員會視需要重新指派資源並更新清單。
系統的硬體抽象層 (HAL) 元件會實作為動態連結程式庫,負責其他系統元件所需的一些硬體層級、平臺特定支援,包括核心模式驅動程式。