PnP 裝置的狀態轉換
在 PnP 系統上,裝置會隨著裝置設定、啟動、可能停止以重新平衡資源而可能移除時,透過各種 PnP 狀態轉換。 本節提供 PnP 裝置狀態的概觀。 概觀是驅動程式中大部分所需的 PnP 支援藍圖。 本檔的其他部分會詳細說明每個狀態轉換。
下圖顯示裝置的 PnP 狀態,以及裝置如何從某個狀態轉換為另一個狀態。
從上圖的左上方開始,PnP 裝置實際上存在於系統中,因為使用者剛插入裝置或裝置在開機時存在。 系統軟體還不知道裝置。
若要開始裝置的軟體設定,PnP 管理員和父匯流排驅動程式會列舉裝置。 PnP 管理員可能是使用者模式元件的協助,可識別裝置的驅動程式,包括函式驅動程式和任何選擇性篩選驅動程式。 如果驅動程式尚未載入,PnP 管理員會呼叫每個驅動程式的 DriverEntry 常式。 如需報告和列舉 PnP 裝置的詳細資訊,請參閱 將 PnP 裝置新增至執行中系統。
一旦驅動程式初始化之後,它必須準備好初始化其裝置。 PnP 管理員會針對驅動程式控制的每個裝置呼叫驅動程式的 AddDevice 常式。
當驅動程式從 PnP 管理員收到 IRP_MN_START_DEVICE 要求時,驅動程式會啟動裝置,並準備好處理裝置的 I/O 要求。 如需處理 IRP_MN_START_DEVICE 要求的相關資訊,請參閱 啟動裝置。
如果 PnP 管理員必須重新設定使用中裝置的硬體資源,它會將 IRP_MN_QUERY_STOP_DEVICE 和 IRP_MN_STOP_DEVICE 要求傳送至裝置的驅動程式。 重新設定硬體資源之後,PnP 管理員會傳送 IRP_MN_START_DEVICE 要求,指示驅動程式重新開機裝置。 如需處理停止 IRP 的相關資訊,請參閱 停止裝置。 (開機設定裝置的驅動程式可以在裝置啟動前接收 IRP_MN_QUERY_STOP_DEVICE 和 IRP_MN_STOP_DEVICE 要求,但上圖中未顯示此步驟。)
在 Windows 98/Me 上,PnP 管理員也會在裝置停用時傳送 IRP_MN_QUERY_STOP_DEVICE 和 IRP_MN_STOP_DEVICE 要求。 這些系統上的驅動程式也會在啟動失敗之後收到 IRP_MN_STOP_DEVICE 要求。
當 PnP 裝置實際從系統移除或已移除時,PnP 管理員會將各種移除 IRP 傳送至裝置的驅動程式,並指示他們移除裝置的軟體表示 (裝置物件,依此類推) 。 如需處理移除 IRP 的資訊,請參閱 移除裝置。
在移除所有驅動程式的裝置之後,PnP 管理員會呼叫驅動程式的 Unload 常式並卸載驅動程式。