Tratamento de IRPs WDM fora da estrutura

[Aplica-se somente ao KMDF]

Quando o gerenciador de E/S entrega um IRP (pacote de solicitação de E/S) a um driver baseado em estrutura, a estrutura intercepta o IRP e faz um dos seguintes procedimentos:

  • Processa o IRP. Por exemplo, a estrutura processa IRPs que contêm IRP_MJ_PNP e IRP_MJ_POWER códigos de função de E/S principais. Durante o processamento desses IRPs, a estrutura pode se comunicar com o driver chamando as funções de retorno de chamada de evento do driver.

  • Cria um objeto de solicitação de estrutura para o IRP e entrega o objeto de solicitação a uma das filas de E/S do driver para que o driver possa recebê-lo, normalmente em um manipulador de solicitação, e processá-lo. A estrutura lida com solicitações de controle de E/S de leitura, gravação e dispositivo dessa maneira.

  • Passa o IRP para o driver mais baixo (se o driver for um driver de filtro) ou conclui o IRP com um valor status de STATUS_INVALID_DEVICE_REQUEST (se o driver não for um driver de filtro) porque o IRP contém um código de função de E/S que a estrutura não dá suporte.

Às vezes, um driver deve lidar com um código de função de E/S que a estrutura não dá suporte.

Raramente, um driver pode precisar pré-processar um IRP antes que a estrutura o trate, ou talvez o driver precise pós-processar um IRP depois que a estrutura e os drivers de nível inferior terminarem de processá-lo.

Como parte do pré-processamento, um driver pode precisar encaminhar um IRP para uma fila de E/S específica.

Os tópicos a seguir descrevem essas situações: