WDM IRP 和 WDF 事件回呼函式
Kernel-Mode Driver Framework (KMDF) 和 User-Mode Driver Framework (UMDF) 支援 Windows IRP 子集。 下表列出主要的 WDM IRP 類型和對應的架構事件回呼函式。 除非另有指定,否則回呼會同時套用至 KMDF 和 UMDF。
IRP_MJ_PNP的 KMDF 回呼
下表依執行順序列出對應至 IRP_MJ_PNP次要 IRP 代碼的 KMDF 回呼。 箭號會指出 WDM FDO 在 IRP 向上或向下移動時,是否會處理 IRP。
注意在 KMDF 驅動程式中,隨插即用和電源管理是整合式作業,而且驅動程式不會收到個別的次要IRP_MJ_PNP或IRP_MJ_POWER要求。 相反地,架構會在電源啟動時呼叫核心回呼集,並在關閉電源時呼叫對應的回呼集,並針對每個個別隨插即用要求呼叫此核心集之前和之後的其他回呼。 如需顯示電源啟動和關閉電源序列的完整圖表,請參閱 移植 PnP 和電源管理功能。
適用于 IRP_MJ_POWER 的 KMDF 回呼
下表列出以執行順序,對應至 IRP_MJ_POWER次要 IRP 碼的 KMDF 回呼。 箭號表示 WDM FDO 是否會在 IRP 上移或向下移動時處理 IRP。
注意注意:在 KMDF 驅動程式中,隨插即用和電源管理是整合作業,而且驅動程式不會收到個別次要IRP_MJ_PNP或IRP_MJ_POWER要求。 相反地,架構會在電源上呼叫一組核心回呼,並在關閉電源時呼叫對應的回呼,並在此核心設定之前和之後,針對每個個別隨插即用要求呼叫其他回呼。 如需顯示電源啟動和關閉電源序列的完整圖表,請參閱 移植 PnP 和電源管理功能。
IRP_MJ_POWER次要程式碼 | 架構回呼 |
---|---|
適用于D1、D2 或 D3 的IRP_MN_SET_POWER (關閉電源) | EvtDeviceSelfManagedIoSuspendEvtIoStop (WdfRequestStopActionSuspend旗標) EvtDeviceArmWakeFromS0或EvtDeviceArmWakeFromSxEvtDmaEnablerSelfManagedIoStop (僅 KMDF) EvtDmaEnablerDisable (KMDF 僅) EvtDmaEnablerFlush (KMDF) EvtDeviceD0ExitPreInterruptsDisabledEvtInterruptDisableEvtDeviceD0Exit |
適用于D0 的IRP_MN_SET_POWER (電源) | EvtDeviceD0EntryEvtInterruptEnableEvtDeviceD0EntryPostInterruptsEnabledEvtDmaEnablerFill (KMDF 僅) EvtDmaEnablerEnable (KMDF 僅) EvtDmaEnablerSelfManagedIoStart (KMDF) EvtIoResumeEvtDeviceSelfManagedIoRestart |
適用于 Sx的 IRP_MN_SET_POWER | 無 |
適用于Sx 的IRP_MN_SET_POWER | 無 |
IRP_MN_POWER_SEQUENCE | 無 |
IRP_MN_WAIT_WAKE | EvtDeviceEnableWakeAtBus (僅 KMDF) |
IRP_MN_WAIT_WAKE | EvtDeviceDisableWakeAtBus (僅 KMDF) |