Requisitos de rotina do driver padrão
Tenha em mente os seguintes pontos ao criar um driver no modo kernel:
Cada driver deve ter uma rotina DriverEntry , que inicializa estruturas e recursos de dados em todo o driver. O gerente de E/S chama a rotina DriverEntry quando carrega o driver.
Cada driver deve ter pelo menos uma rotina de expedição que receba e processe pacotes de solicitação de E/S (IRPs). Cada driver deve colocar o ponto de entrada de uma rotina de expedição em sua estrutura DRIVER_OBJECT , para cada código de função principal IRP que o driver pode receber. Um driver pode ter uma rotina de expedição separada para cada código de função principal do IRP ou pode ter uma ou mais rotinas de expedição que lidam com vários códigos de função.
Todo driver WDM deve ter uma rotina de descarregamento . O driver deve colocar o ponto de entrada da rotina Descarregue no objeto de driver do driver. As responsabilidades da rotina de descarregamento de um driver PnP são mínimas, mas a rotina de descarregamento de um driver não PnP é responsável por liberar todos os recursos do sistema que o driver está usando.
Cada driver WDM deve ter uma rotina AddDevice e definir seu ponto de entrada na extensão de driver do objeto driver. Uma rotina AddDevice é responsável por criar e inicializar objetos de dispositivo para cada dispositivo PnP que o driver controla.
Um driver pode ter uma rotina StartIo , que o gerente de E/S chama para iniciar operações de E/S para IRPs que o driver enfileiraram em uma fila de IRP fornecida pelo sistema. Qualquer driver que não tenha uma rotina StartIo deve configurar e gerenciar filas internas para os IRPs que recebe ou deve concluir cada IRP dentro de suas rotinas de expedição. Os drivers de nível superior podem não ter uma rotina StartIo , se eles simplesmente passarem IRPs para drivers de nível inferior diretamente de suas rotinas de expedição.
Determinados drivers de miniporte são exceções aos requisitos anteriores. Consulte a documentação específica do tipo de dispositivo no WDK (Kit de Driver do Windows) para obter informações sobre os requisitos para drivers de miniport.
Se um driver tem qualquer outro tipo de rotina padrão depende de sua funcionalidade e de como esse driver se encaixa no sistema (por exemplo, se ele interopera com drivers fornecidos pelo sistema). Consulte a documentação específica do tipo de dispositivo no WDK para obter detalhes.