Kernel-Mode Driver Framework (KMDF) und User-Mode Driver Framework (UMDF) unterstützen eine Teilmenge von Windows IRPs. In der folgenden Tabelle sind die wichtigsten WDM-IRP-Typen und die entsprechenden Framework-Ereignisrückruffunktionen aufgeführt. Sofern nicht anders angegeben, gelten die Rückrufe sowohl für KMDF als auch für UMDF.
KMDF-Rückrufe für IRP_MJ_PNP
In der folgenden Tabelle sind, in Ausführungsreihenfolge, die KMDF-Rückrufe aufgeführt, die den minor IRP-Codes für IRP_MJ_PNP entsprechen. Die Pfeile geben an, ob ein WDM-FDO das IRP verarbeitet, während er den Stapel nach oben oder unten bewegt.
Anmerkung In einem KMDF-Treiber sind Plug- und Play- und Energieverwaltung integrierte Vorgänge, und der Treiber erhält nicht die einzelnen kleineren IRP_MJ_PNP oder IRP_MJ_POWER Anforderungen. Stattdessen ruft das Framework einen Kernsatz von Rückrufen beim Einschalten und einen entsprechenden Satz beim Ausschalten auf und ruft zusätzliche Rückrufe vor und nach diesem Kernsatz entsprechend für jede einzelne Plug-and-Play-Anforderung auf. Umfassende Diagramme, die die Power-Up- und Power-Down-Sequenzen zeigen, finden Sie unter Portieren von PnP- und Power Management-Funktionen.
|
IRP_MN_CANCEL_REMOVE_DEVICE |
Nichts |
|
IRP_MN_CANCEL_STOP_DEVICE |
Nichts |
| ^IRP_MN_DEVICE_USAGE_NOTIFICATION |
EvtDeviceUsageNotification |
|
IRP_MN_EJECT |
EvtDeviceEject (nur KMDF) |
|
IRP_MN_FILTER_RESOURCE_REQUIREMENTS |
EvtDeviceFilterRemoveResourceRequirements (nur KMDF) |
| ^IRP_MN_FILTER_RESOURCE_REQUIREMENTS |
EvtDeviceFilterAddResourceRequirements (nur KMDF) |
|
IRP_MN_QUERY_BUS_INFORMATION |
Keiner. Der KMDF-Treiber ruft WdfDeviceInitXxx-Methoden auf, um Geräteeigenschaften während der Initialisierung festzulegen, damit das Framework auf diese Abfrage eigenständig reagieren kann, ohne den Treiber zu benachrichtigen. |
|
IRP_MN_QUERY_CAPABILITIES |
Keiner. Der KMDF-Treiber ruft WdfDeviceInitXxx-Methoden auf, um Geräteeigenschaften während der Initialisierung festzulegen, damit das Framework auf diese Abfrage eigenständig reagieren kann, ohne den Treiber zu benachrichtigen. |
| |IRP_MN_QUERY_DEVICE_RELATIONS (Bus-, Entfernungs- und Auswurfbeziehungen) |
EvtDeviceRelationsQuery |
|
IRP_MN_QUERY_DEVICE_TEXT |
Keiner. Der KMDF-Treiber ruft WdfDeviceInitXxx-Methoden auf, um Geräteeigenschaften während der Initialisierung festzulegen, damit das Framework auf diese Abfrage eigenständig reagieren kann, ohne den Treiber zu benachrichtigen. |
|
IRP_MN_QUERY_ID |
Keiner. Der KMDF-Treiber ruft WdfDeviceInitXxx-Methoden auf, um Geräteeigenschaften während der Initialisierung festzulegen, damit das Framework auf diese Abfrage eigenständig reagieren kann, ohne den Treiber zu benachrichtigen. |
|
IRP_MN_QUERY_INTERFACE |
EvtDeviceProcessQueryInterfaceRequest (nur KMDF) |
|
IRP_MN_QUERY_PNP_DEVICE_STATE |
Keiner. Der KMDF-Treiber ruft WdfDeviceInitXxx-Methoden auf, um Geräteeigenschaften während der Initialisierung festzulegen, damit das Framework auf diese Abfrage eigenständig reagieren kann, ohne den Treiber zu benachrichtigen. |
|
IRP_MN_QUERY_REMOVE_DEVICE |
EvtDeviceQueryRemove |
|
IRP_MN_QUERY_RESOURCE_REQUIREMENTS |
EvtDeviceResourceRequirementsQuery (nur KMDF) |
|
IRP_MN_QUERY_RESOURCES |
EvtDeviceResourcesQuery (nur KMDF) |
|
IRP_MN_QUERY_STOP_DEVICE |
EvtDeviceQueryStop |
|
IRP_MN_READ_CONFIG |
Keiner. Der KMDF-Treiber ruft WdfDeviceInitXxx-Methoden auf, um Geräteeigenschaften während der Initialisierung festzulegen, damit das Framework auf diese Abfrage eigenständig reagieren kann, ohne den Treiber zu benachrichtigen. |
|
IRP_MN_REMOVE_DEVICE |
Nach IRP_MN_QUERY_REMOVE_DEVICE:
EvtDeviceSelfManagedIoSuspendEvtIoStop (WdfRequestStopActionSuspend Flag) EvtDmaEnablerSelfManagedIoStop (nur KMDF)EvtDmaEnablerDisable (nur KMDF)EvtDmaEnablerFlush (nur KMDF)EvtDeviceD0ExitPreInterruptsDisabledEvtInterruptDisableEvtDeviceD0Exit (WdfPowerDeviceD3Final Zustand) EvtDeviceReleaseHardwareEvtIoStop (WdfRequestStopActionPurge Flag) für leistungsverwaltete Warteschlangen EvtDeviceSelfManagedIoFlushEvtIoStop (WdfRequestStopActionPurge Flag) für nicht leistungsverwaltete Warteschlangen EvtDeviceSelfManagedIoCleanupEvtCleanupCallback für WDFDEVICE EvtDestroyCallback für WDFDEVICE Nach IRP_MN_SURPRISE_REMOVAL:
EvtIoStop (WdfRequestStopActionPurge-Flag) für nicht stromverwaltete Warteschlangen EvtDeviceSelfManagedIoCleanupEvtCleanupCallback für WDFDEVICE EvtDestroyCallback für WDFDEVICE |
|
IRP_MN_SET_LOCK |
EvtDeviceSetLock (nur KMDF) |
| ^IRP_MN_START_DEVICE |
Nach Enumeration:
No changes needed; the translation remains the same.
EvtDeviceRemoveAddedResources (nur KMDF)EvtDevicePrepareHardwareEvtDeviceD0EntryEvtInterruptEnableEvtDeviceD0EntryPostInterruptsEnabledEvtDmaEnablerFill (nur KMDF)EvtDmaEnablerEnable (nur KMDF)EvtDmaEnablerSelfManagedIoStart (nur KMDF)EvtDeviceSelfManagedIoInit
Nach IRP_MN_STOP_DEVICE:
EvtDeviceRemoveAddedResources (nur KMDF)EvtDevicePrepareHardwareEvtDeviceD0EntryEvtInterruptEnableEvtDeviceD0EntryPostInterruptsEnabledEvtDmaEnablerFill (nur KMDF)EvtDmaEnablerEnable (nur KMDF)EvtDmaEnablerSelfManagedIoStart (nur KMDF)EvtIoResumeEvtDeviceSelfManagedIoRestart |
|
IRP_MN_STOP_DEVICE |
EvtDeviceSelfManagedIoSuspendEvtIoStop (WdfRequestStopActionSuspend flag) EvtDmaEnablerSelfManagedIoStop (nur KMDF)EvtDmaEnablerDisable (nur KMDF)EvtDmaEnablerFlush (nur KMDF)EvtDeviceD0ExitPreInterruptsDisabledEvtInterruptDisableEvtDeviceD0Exit (WdfPowerDeviceD3Final Zustand) EvtDeviceReleaseHardware |
|
IRP_MN_SURPRISE_REMOVAL |
EvtDeviceSurpriseRemovalEvtDeviceSelfManagedIoSuspendEvtIoStop (WdfRequestStopActionSuspend Flag) EvtDmaEnablerSelfManagedIoStop (nur KMDF)EvtDmaEnablerDisable (nur KMDF)EvtDmaEnablerFlush (nur KMDF)EvtDeviceD0ExitPreInterruptsDisabledEvtInterruptDisableEvtDeviceD0Exit (WdfPowerDeviceD3Final Zustand) EvtDeviceReleaseHardwareEvtIoStop (WdfRequestStopActionPurge-Flag) für power-verwaltete Warteschlangen EvtDeviceSelfManagedIoFlush |
|
IRP_MN_WRITE_CONFIG |
Keiner. Der KMDF-Treiber ruft WdfDeviceInitXxx-Methoden auf, um Geräteeigenschaften während der Initialisierung festzulegen, damit das Framework auf diese Abfrage eigenständig reagieren kann, ohne den Treiber zu benachrichtigen. |
KMDF-Rückrufe für IRP_MJ_POWER
In der folgenden Tabelle sind, in der Ausführungsreihenfolge, die KMDF-Rückrufe aufgeführt, die den minor IRP-Codes für IRP_MJ_POWER entsprechen. Die Pfeile geben an, ob ein WDM-FDO das IRP verarbeitet, während er den Stapel nach oben oder unten bewegt.
Anmerkung Hinweis: In einem KMDF-Treiber sind Plug- und Play- und Energieverwaltung integrierte Vorgänge, und der Treiber erhält nicht die einzelnen kleineren IRP_MJ_PNP oder IRP_MJ_POWER Anforderungen. Stattdessen ruft das Framework einen Kernsatz von Rückrufen beim Einschalten und einen entsprechenden Satz beim Ausschalten auf und ruft zusätzliche Rückrufe vor und nach diesem Kernsatz je nach Bedarf der einzelnen Plug-and-Play-Anforderungen auf. Umfassende Diagramme, die die Power-Up- und Power-Down-Sequenzen zeigen, finden Sie unter Portieren von PnP- und Power Management-Funktionen.