Funções de retorno de chamada de evento WDM IRPs e WDF
Kernel-Mode Driver Framework (KMDF) e UMDF (User-Mode Driver Framework) dão suporte a um subconjunto de IRPs do Windows. A tabela a seguir lista os principais tipos de IRP do WDM e as funções de retorno de chamada de evento de estrutura correspondentes. A menos que especificado de outra forma, os retornos de chamada se aplicam a KMDF e UMDF.
Retornos de chamada KMDF para IRP_MJ_PNP
A tabela a seguir lista, em ordem de execução, os retornos de chamada KMDF que correspondem aos códigos IRP secundários para IRP_MJ_PNP. As setas indicam se um FDO do WDM manipula o IRP à medida que ele viaja para cima ou para baixo na pilha.
Nota Em um driver KMDF, Plug and Play e gerenciamento de energia são operações integradas e o driver não recebe as solicitações individuais de IRP_MJ_PNP ou IRP_MJ_POWER secundárias. Em vez disso, a estrutura chama um conjunto principal de retornos de chamada na ligação e um conjunto correspondente na desligar e chama retornos de chamada adicionais antes e depois desse conjunto de núcleos, conforme apropriado para cada solicitação de Plug and Play individual. Para obter diagramas abrangentes que mostram as sequências de ligar e desligar, confira Portabilidade de PnP e Funcionalidade de Gerenciamento de Energia.
Retornos de chamada KMDF para IRP_MJ_POWER
A tabela a seguir lista, em ordem de execução, os retornos de chamada KMDF que correspondem aos códigos IRP secundários para IRP_MJ_POWER. As setas indicam se um FDO do WDM manipula o IRP enquanto ele viaja para cima ou para baixo na pilha.
Nota Observação: em um driver KMDF, Plug and Play e gerenciamento de energia são operações integradas e o driver não recebe as solicitações individuais de IRP_MJ_PNP secundárias ou IRP_MJ_POWER. Em vez disso, a estrutura chama um conjunto principal de retornos de chamada na ligar/desligar e um conjunto correspondente na desligar e chama retornos de chamada adicionais antes e depois desse conjunto de núcleos conforme apropriado para cada solicitação de Plug and Play individual. Para diagramas abrangentes que mostram as sequências de ligar e desligar, consulte Portando PnP e Funcionalidade de Gerenciamento de Energia.
IRP_MJ_POWER código secundário | Retornos de chamada da estrutura |
---|---|
↓IRP_MN_SET_POWER para D1, D2 ou D3 (desligar) | EvtDeviceSelfManagedIoSuspendEvtIoStop (sinalizador WdfRequestStopActionSuspend ) EvtDeviceArmWakeFromS0 ou EvtDeviceArmWakeFromSxEvtDmaEnablerSelfManagEdIoStop (somente KMDF)EvtDmaEnablerDisable (somente KMDF)EvtDmaEnablerFlush (somente KMDF)EvtDeviceD0ExitPreInterruptsDisabledEvtInterruptDisableEvtDeviceD0Exit |
↑IRP_MN_SET_POWER para D0 (ligar) | EvtDeviceD0EntryEvtInterruptEnableEvtDeviceD0EntryPostInterruptsEnabledEvtDmaEnablerFill (somente KMDF)EvtDmaEnablerEnable (somente KMDF)EvtDmaEnablerSelfManagedIoStart (somente KMDF)EvtIoResumeEvtDeviceSelfManagedIoRestart |
↓IRP_MN_SET_POWER para Sx | Nenhum |
↑IRP_MN_SET_POWER para Sx | Nenhum |
IRP_MN_POWER_SEQUENCE | Nenhum |
↓IRP_MN_WAIT_WAKE | EvtDeviceEnableWakeAtBus (somente KMDF) |
↑IRP_MN_WAIT_WAKE | EvtDeviceDisableWakeAtBus (somente KMDF) |