Compartilhar via


Introdução à notificação do driver

A partir do Windows Server 2008, o sistema operacional pode notificar um driver de dispositivo quando um módulo de processador ou memória é adicionado dinamicamente a uma partição de hardware. Há várias notificações diferentes que ocorrem em diferentes estágios do processo de uma operação de adição dinâmica. Cada uma dessas notificações usa um método de notificação diferente para notificar o driver do dispositivo sobre o evento. Você pode usar um ou mais desses métodos de notificação para que o sistema operacional notifique o driver quando ocorrer uma operação de adição frequente. Em seguida, o driver pode responder conforme necessário para uma operação segura e ideal.

A tabela a seguir identifica os diferentes métodos de notificação e se eles se aplicam a processadores, memória ou processadores e memória.

Método de notificação Para processadores Para memória

Notificação de driver síncrono

X

Notificação de driver assíncrono

X

X

Evento de notificação de memória

X

Rebalanceamento de recursos

X

Notificação de driver síncrono

Com a Notificação de Driver Síncrona, o sistema operacional notifica de forma síncrona os drivers de dispositivo de que um novo processador foi adicionado à partição de hardware. Essa é a primeira notificação que um driver de dispositivo recebe sobre uma alteração no número de processadores.

Quando um novo processador é adicionado à partição de hardware, o sistema operacional envia essa notificação aos drivers de dispositivo depois que o sistema operacional inicia o novo processador, mas antes que o sistema operacional comece a agendar threads no processador. Quando um driver de dispositivo recebe essa notificação, ele pode alocar qualquer estrutura de dados por processador e atribuir qualquer outro recurso por processador ao novo processador. Isso prepara o driver do dispositivo para executar suas rotinas de expedição, interromper ISRs (rotinas de serviço), DPCs (chamadas de procedimento adiadas) e quaisquer outros threads de driver no novo processador.

Um driver de dispositivo deve se registrar no sistema operacional para receber uma notificação de driver síncrona. Para obter mais informações, consulte Registrando-se para notificação de driver síncrono.

Esse método de notificação só é aplicável aos processadores. Não há nenhum mecanismo de notificação síncrona para memória.

Notificação de driver assíncrono

Com a Notificação de Driver Assíncrono, o sistema operacional notifica de forma assíncrona os drivers de dispositivo de que um novo processador ou módulo de memória foi adicionado à partição de hardware. A partir do Windows Server 2008, processadores e módulos de memória são considerados dispositivos Plug and Play (PnP). Portanto, o sistema operacional usa o mecanismo de notificação PnP para notificação de driver assíncrono.

Quando um novo processador ou módulo de memória é adicionado à partição de hardware, o sistema operacional envia essa notificação aos drivers de dispositivo depois que o sistema operacional inicia o novo processador ou dispositivo de memória. No caso de um novo processador, o sistema operacional não envia essa notificação para drivers de dispositivo até que ele tenha iniciado o agendamento de threads no novo processador.

Observação

Todas as notificações PnP são assíncronas. Portanto, essas notificações podem não ser recebidas por um driver de dispositivo até algum momento após o sistema operacional ter iniciado o processador ou o módulo de memória.

Quando um driver de dispositivo recebe essa notificação, ele pode ajustar alguns ou todos os seguintes itens de acordo:

  • Buffer de memória e outras alocações de recursos

  • Atribuição de recursos a processadores específicos

  • Agendamento de DPCs e outros threads em processadores específicos

  • Algoritmos de balanceamento de carga

Importante

Quando você adiciona um novo processador a uma partição de hardware, o sistema operacional não envia a notificação PnP até que o novo processador seja iniciado e o sistema operacional tenha começado a agendar threads nele. Se um driver de dispositivo precisar executar determinadas tarefas antes que o sistema operacional comece a agendar threads no novo processador, como alocar uma estrutura de dados por processador, você deverá usar o método de notificação síncrona para o driver.

Um driver de dispositivo deve se registrar no sistema operacional para receber notificação de driver assíncrono. Para obter mais informações, consulte Registrando-se para notificação de driver assíncrono.

Evento de notificação de memória

Com o método de evento de notificação de memória, você pode fazer com que o driver do dispositivo agende um thread que aguarda o sistema operacional definir o objeto de evento \KernelObjects\HighMemoryCondition . O sistema operacional define esse objeto de evento quando a quantidade de memória física livre excede um determinado valor. Esse evento notifica todos os threads que estão aguardando o objeto de evento de que uma quantidade significativa de memória física está atualmente disponível no sistema. Esse evento pode ser uma indicação de que você adicionou dinamicamente um novo módulo de memória ao sistema. Quando o sistema operacional define esse objeto de evento, o driver do dispositivo pode responder ao evento alocando buffers de memória adicionais.

Para obter mais informações sobre o objeto de evento \KernelObjects\HighMemoryCondition , consulte Objetos de Evento Standard.

Importante

Se o sistema operacional definir o objeto de evento \KernelObjects\HighMemoryCondition , o evento fornecerá apenas uma indicação de que você pode ter adicionado dinamicamente um novo módulo de memória à partição de hardware. Há outras situações que podem fazer com que o sistema operacional defina esse objeto de evento. Portanto, a partir do Windows Server 2008, não recomendamos que os drivers de dispositivo usem esse método de notificação. Em vez disso, os drivers de dispositivo devem usar o método de notificação de driver assíncrono.

Esse método só é aplicável à memória. Não há nenhum mecanismo de notificação correspondente para processadores.

Rebalanceamento de recursos

A partir do Windows Server 2008, quando você adiciona um novo processador a uma partição de hardware, o sistema operacional inicia um rebalanceamento de recursos em todo o sistema. Se um dispositivo participará desse rebalanceamento de recursos é determinado pela configuração da propriedade do dispositivo DEVPKEY_Device_DHP_Rebalance_Policy para o dispositivo. O comportamento padrão para dispositivos na classe de instalação do dispositivo Adaptador de Rede (Classe = Net) é que eles não participarão do rebalanceamento de recursos quando um novo processador for adicionado dinamicamente ao sistema. O comportamento padrão para dispositivos em todas as outras classes de configuração de dispositivo é que eles participarão do rebalanceamento de recursos quando um novo processador for adicionado dinamicamente ao sistema.

Se um dispositivo for um dispositivo PnP (Plug and Play) e participar desse rebalanceamento de recursos, o sistema operacional enviará IRP_MN_QUERY_STOP_DEVICE, IRP_MN_STOP_DEVICE e IRP_MN_START_DEVICE IRPs PnP para o driver do dispositivo durante a operação de rebalanceamento de recursos. Essas solicitações PnP notificam o driver de que ocorreu uma alteração de hardware na partição de hardware. Um driver de dispositivo deve dar suporte ao rebalanceamento de recursos tratando corretamente as solicitações PnP IRP_MN_QUERY_STOP_DEVICE e IRP_MN_STOP_DEVICE . Um driver de dispositivo nunca deve rejeitar uma solicitação PnP IRP_MN_QUERY_STOP_DEVICE.

Essas solicitações PnP permitem que um driver de dispositivo use totalmente o novo conjunto de processadores ativos na partição de hardware depois de adicionar um novo processador. Especificamente, um driver de dispositivo que dá suporte ao rebalanceamento de recursos usa as solicitações PnP que recebe durante o rebalanceamento de recursos para desconectar as ISRs (rotinas de serviço de interrupção) e reconectá-las com o valor de afinidade do processador atualizado. Isso permite que o driver de dispositivo use todos os processadores atualmente ativos na partição de hardware, incluindo novos processadores, para lidar com solicitações de interrupção.

Os drivers de dispositivo devem enfileirar todas as solicitações de E/S durante o rebalanceamento de recursos.

Para obter mais informações sobre o reequilíbrio de recursos, consulte Parando um dispositivo para reequilibrar recursos.

Esse método só é aplicável aos processadores. O sistema operacional não inicia um rebalanceamento de recursos em todo o sistema quando você adiciona um novo módulo de memória a uma partição de hardware.