處理儲存體類別驅動程式中的 PnP 啟動

當 PnP 管理員使用啟動要求呼叫類別驅動程式的 DispatchPnP常式 (IRP_MJ_PNP時,儲存體類別驅動程式會執行裝置特定的初始化,IRP_MN_START_DEVICE) 。 儲存類別驅動程式的 DispatchPnP 常式會呼叫內部 StartDevice 常式,或內嵌實作相同的功能。 由於傳送至 FDO 的啟動要求必須先由堆疊中的最低驅動程式處理,因此儲存類別驅動程式的 DispatchPnP 常式會先使用 IoCallDriver 將要求轉送至下一個較低的驅動程式,然後再呼叫 StartDevice。 如果要求已傳送至 PDO,驅動程式就不需要在處理要求之前轉送要求。

儲存類別驅動程式的內部 StartDevice 常式會設定其 FDO 的裝置擴充功能,其中包含驅動程式決定的資料來管理裝置的 I/O 要求。 如需詳細資訊,請參閱 設定存放裝置類別驅動程式的裝置擴充功能

StartDevice常式應該啟用驅動程式在其AddDevice常式中註冊的任何裝置介面。 (請參閱 裝置介面類別別.) 它也可能為其裝置物件建立符號連結。

在較低裝置的啟動完成之後,驅動程式可以假設裝置處於 D0 電源狀態, (完全開啟且運作) ,以用於大部分用途。 如果裝置未完全啟動電源,埠驅動程式將會將要求排入佇列,直到裝置就緒為止。 不過,如果驅動程式的 StartDevice 常式需要執行任何需要目前啟動的作業,例如,若要啟動磁片磁碟機 ,驅動程式必須先將 D0 電源要求傳送至下一個較低的驅動程式,再執行作業。

類型為 FILE_DEVICE_DISK 或 FILE_DEVICE_MASS_STORAGE 的裝置驅動程式可以註冊閒置偵測,並在其 PoRegisterDeviceforIdleDetection 呼叫中指定 -1 的調和效能逾時值,以使用裝置類別的標準電源原則逾時。

如需儲存類別驅動程式 DispatchPnP 常式的詳細資訊,請參閱 處理對儲存體周邊的 PnP 要求。 如需處理 PnP 啟動要求的詳細資訊,請參閱 啟動裝置