Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Kernel-Mode Driver Framework (KMDF) e User-Mode Driver Framework (UMDF) suportam um subconjunto de IRPs do Windows. A tabela a seguir lista os principais tipos de IRP WDM e as funções de retorno de chamada de evento do framework correspondentes. A menos que especificado de outra forma, os retornos de chamada aplicam-se tanto ao KMDF como ao UMDF.
| Código IRP principal | Função de callback de evento WDF |
|---|---|
| IRP_MJ_CLEANUP | EvtFileCleanup |
| IRP_MJ_CLOSE | EvtFileClose |
| IRP_MJ_CREATE | EvtDeviceFileCreate ou EvtIoDefault |
| IRP_MJ_CREATE_MAILSLOT | Sem apoio direto; implementar EvtDeviceWdmIrpPreprocess (somente KMDF) |
| IRP_MJ_DEVICE_CHANGE | Sem apoio direto; implementar EvtDeviceWdmIrpPreprocess (somente KMDF) |
| IRP_MJ_DEVICE_CONTROL | EvtIoDeviceControl ou EvtIoDefault |
| IRP_MJ_DIRECTORY_CONTROL | Sem apoio direto; implementar EvtDeviceWdmIrpPreprocess (somente KMDF) |
| #B0 #A1 Controle do sistema de arquivos (IRP_MJ_FILE_SYSTEM_CONTROL) #A2 #C3 | Sem apoio direto; implementar EvtDeviceWdmIrpPreprocess (somente KMDF) |
| #B0 #A1 IRP_MJ_FLUSH_BUFFERS #A2 #C3 | Sem apoio direto; implementar EvtDeviceWdmIrpPreprocess (somente KMDF) |
| IRP_MJ_INTERNAL_DEVICE_CONTROL | EvtIoInternalDeviceControl ou EvtIoDefault |
| #B0 #A1 Controle de Bloqueio de IRP_MJ #A2 #C3 | Sem apoio direto; implementar EvtDeviceWdmIrpPreprocess (somente KMDF) |
| IRP_MJ_PNP | Muitos; consulte KMDF Callbacks para IRP_MJ_PNP. |
| IRP_MJ_POWER | Muitos; consulte KMDF Callbacks para IRP_MJ_POWER. |
| IRP_MJ_QUERY_EA | Sem apoio direto; implementar EvtDeviceWdmIrpPreprocess (somente KMDF) |
| #B0 #A1 IRP_MJ_QUERY_INFORMATION #A2 #C3 | Sem apoio direto; implementar EvtDeviceWdmIrpPreprocess (somente KMDF) |
| IRP_MJ_QUERY_QUOTA | Sem apoio direto; implementar EvtDeviceWdmIrpPreprocess (somente KMDF) |
| IRP_MJ_QUERY_SECURITY | Sem apoio direto; implementar EvtDeviceWdmIrpPreprocess (somente KMDF) |
| #B0 #A1 IRP_MJ_QUERY_VOLUME_INFORMATION #A2 #C3 | Sem apoio direto; implementar EvtDeviceWdmIrpPreprocess (somente KMDF) |
| IRP_MJ_READ | EvtIoRead ou EvtIoDefault |
| IRP_MJ_SET_EA | Sem apoio direto; implementar EvtDeviceWdmIrpPreprocess (somente KMDF) |
| #B0 #A1 IRP_MJ_SET_INFORMATION #A2 #C3 | Sem apoio direto; implementar EvtDeviceWdmIrpPreprocess (somente KMDF) |
| IRP_MJ_SET_QUOTA | Sem apoio direto; implementar EvtDeviceWdmIrpPreprocess (somente KMDF) |
| IRP_MJ_SET_SECURITY | Sem apoio direto; implementar EvtDeviceWdmIrpPreprocess (somente KMDF) |
| IRP_MJ_SET_VOLUME_INFORMATION | Sem apoio direto; implementar EvtDeviceWdmIrpPreprocess (somente KMDF) |
| IRP_MJ_SHUTDOWN | Para objetos de dispositivo de controle, implemente EvtDeviceShutdownNotification (somente KMDF) Para todos os objetos de dispositivo Plug and Play: Não é suportado; implemente EvtDeviceWdmIrpPreprocess (somente KMDF). |
| IRP_MJ_SYSTEM_CONTROL | Crie objetos WDFWMIPROVIDER e WDFWMIINSTANCE e implemente retornos de chamada EvtWmiXxx (somente KMDF). |
| IRP_MJ_WRITE | EvtIoWrite ou EvtIoDefault |
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 WDM FDO manipula o IRP à medida que ele viaja para cima ou para baixo na pilha.
Observação Em um driver KMDF, o Plug and Play e o 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 menores. Em vez disso, a estrutura chama um conjunto principal de retornos de chamada na inicialização e um conjunto correspondente na desativação, e chama retornos de chamada adicionais antes e depois desse conjunto principal, conforme apropriado para cada solicitação Plug and Play individual. Para obter diagramas abrangentes que mostram as sequências de power-up e power-down, consulte Porting PnP and Power Management Functionality.
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 WDM FDO manipula o IRP à medida que ele viaja para cima ou para baixo na pilha.
Observação Nota: Num driver KMDF, o Plug and Play e o gerenciamento de energia são operações integradas, e o driver não recebe os pedidos individuais menores de IRP_MJ_PNP ou IRP_MJ_POWER. Em vez disso, a estrutura chama um conjunto principal de retornos de chamada na inicialização e um conjunto correspondente na desativação, e chama retornos de chamada adicionais antes e depois desse conjunto principal, conforme apropriado para cada solicitação Plug and Play individual. Para obter diagramas abrangentes que mostram as sequências de power-up e power-down, consulte Porting PnP and Power Management Functionality.
| Código menor do IRP_MJ_POWER | Retornos de chamada de framework |
|---|---|
| ↓IRP_MN_SET_POWER para D1, D2 ou D3 (redução de energia) | pt-PT: EvtDeviceSelfManagedIoSuspendEvtIoStop (sinalizador WdfRequestStopActionSuspend) EvtDeviceArmWakeFromS0 ou EvtDeviceArmWakeFromSxEvtDmaEnablerSelfManagedIoStop (apenas KMDF)EvtDmaEnablerDisable (apenas KMDF)EvtDmaEnablerFlush (apenas KMDF)EvtDeviceD0ExitPreInterruptsDisabledEvtInterruptDisableEvtDeviceD0Exit |
| ↑IRP_MN_SET_POWER para D0 (ativação de energia) | EvtDeviceD0EntryEvtInterruptEnableEvtDeviceD0EntryPostInterruptsEnabledEvtDmaEnablerFill (apenas KMDF)EvtDmaEnablerEnable (apenas KMDF)EvtDmaEnablerSelfManagedIoStart (apenas KMDF)EvtIoResumeEvtDeviceSelfManagedIoRestart |
| ↓IRP_MN_SET_POWER para Sx | Nenhum |
| ↑IRP_MN_SET_POWER para Sx | Nenhum |
| #B0 #A1 IRP_MN_POWER_SEQUENCE #A2 #C3 | Nenhum |
| ↓IRP_MN_WAIT_WAKE | EvtDeviceEnableWakeAtBus (somente KMDF) |
| ↑IRP_MN_WAIT_WAKE | EvtDeviceDisableWakeAtBus (apenas KMDF) |