支援函式驅動程式中的 PnP 和電源管理
函式驅動程式 會控制裝置的作業,因此會存取裝置硬體。 這些驅動程式必須支援 PnP 和電源管理作業,而且通常會在 建立裝置物件時註冊數個事件回呼函式。
一般而言,函式驅動程式的 EvtDriverDeviceAdd 事件回呼函式會呼叫 WdfDeviceInitSetPnpPowerEventCallbacks 來註冊下列回呼函式:
EvtDevicePrepareHardware,可將裝置的系統指派資源傳遞給驅動程式。 驅動程式可以執行作業,例如將裝置的匯流排相對記憶體對應至處理器的虛擬位址空間,讓驅動程式能夠存取硬體。
EvtDeviceD0Entry,它會執行載入韌體等作業,每次驅動程式的裝置進入其運作 (D0) 狀態時都需要。
EvtDeviceD0Exit,它會執行每次驅動程式的裝置離開其運作 (D0) 狀態並進入低電源狀態時所需的作業。
EvtDeviceReleaseHardware,它會釋放 EvtDevicePrepareHardware 配置的任何系統資源。
如同所有架構定義的回呼函式,上述清單中的函式是選擇性的。 只有當驅動程式需要它們時,您才必須提供它們。
函式驅動程式可以呼叫 WdfDeviceSetPnpCapabilities 和 WdfDeviceSetPowerCapabilities ,向作業系統報告裝置的 PnP 和電源管理功能。
一般而言,您將會針對大部分 I/O 要求使用架構的 電源管理 I/O 佇列 。 如果 I/O 佇列受到電源管理,則架構只有在其裝置處於運作 (D0) 狀態時,才會將要求傳遞給驅動程式。 如需電源管理 I/O 佇列的詳細資訊,請參閱 I/O 佇列的電源管理。
一般而言,裝置的函式驅動程式是驅動程式堆疊的 電源原則擁有者 。 電源原則擁有者會決定裝置的適當 裝置電源狀態 ,並在裝置電源狀態應變更時,將要求傳送至裝置的驅動程式堆疊。 針對架構型驅動程式,架構會處理此責任,因此您不需要在驅動程式中提供程式碼,即可要求裝置電源狀態的變更。
電源原則擁有者有兩個額外的責任:它會控制裝置在閒置時進入低電源狀態的能力,而系統仍處於其 運作 (S0) 狀態,並控制裝置從低電源狀態偵測到外來事件時產生喚醒訊號的能力。 如果您的裝置具有閒置或喚醒功能,您的函式驅動程式可以提供額外的回呼函式。 如需電源原則擁有者責任的詳細資訊,請參閱 電源原則擁有權。