Configurando sinalizadores de objeto do dispositivo para gerenciamento de energia
Em sua rotina AddDevice , cada driver cria um objeto de dispositivo (DO (objeto de dispositivo de filtro), FDO (objeto de dispositivo funcional) ou PDO (objeto de dispositivo físico)) e define os sinalizadores DO_XXX no objeto do dispositivo para descrever os atributos do dispositivo e a configuração do driver. Os sinalizadores de objeto de dispositivo a seguir pertencem ao gerenciamento de energia.
Sinalizador | Descrição |
---|---|
DO_POWER_INRUSH | Indica que o atual desenhado pelo dispositivo aumenta quando o dispositivo é ativado pela primeira vez. Esse aumento ou "inrush" dura um curto período, após o qual o atual desenhado pelo dispositivo cai para um nível operacional mais baixo. |
DO_POWER_PAGABLE | Indica que o driver é paginável. A partir do Windows 2000, os drivers que podem ser paginado devem definir o sinalizador DO_POWER_PAGABLE. O power manager chama esses drivers em IRQL = PASSIVE_LEVEL. Para obter mais informações sobre drivers pagináveis, consulte Tornando os drivers pagináveis. |
Os sinalizadores de objeto do dispositivo normalmente são definidos pelo driver de barramento quando ele cria o PDO para o dispositivo. No entanto, alguns drivers de função podem precisar alterar os valores desses sinalizadores como parte de suas rotinas AddDevice . A partir do Windows Vista, o sistema operacional não exige que todos os objetos de dispositivo em uma pilha de dispositivos tenham os mesmos sinalizadores relacionados à energia definidos. No entanto, no Windows Server 2003, Windows XP e Windows 2000, todos os objetos de dispositivo em uma pilha de dispositivos devem ter os mesmos sinalizadores relacionados à energia definidos.
A partir do Windows 2000, os drivers de dispositivos que estão no caminho de paginação não devem definir o sinalizador DO_POWER_PAGABLE. Um driver estará no "caminho de paginação" se ele participar de operações de E/S no arquivo de paginação. Os drivers que não definem esse sinalizador devem ser chamáveis em IRQL = DISPATCH_LEVEL. Para obter mais informações, consulte Restrições em rotinas de expedição.
Em geral, os motoristas não devem alterar o valor do motorista do ônibus para o sinalizador de DO_POWER_PAGABLE, e um motorista nunca deve definir esse sinalizador se um motorista de nível inferior o limpou. Ao lidar com transições que envolvem solicitações de paginação PnP (normalmente em resposta a um IRP_MJ_PNP com IRP_MN_DEVICE_USAGE_NOTIFICATION solicitação), um driver de armazenamento deve sequenciar cuidadosamente sua configuração e limpeza do sinalizador.
Os drivers para dispositivos que exigem um inrush de energia na inicialização devem definir o sinalizador DO_POWER_INRUSH no objeto do dispositivo antes de limpar o sinalizador de DO_DEVICE_INITIALIZING. Apenas um driver na pilha do dispositivo, normalmente o PDO (driver de barramento), precisa definir o sinalizador DO_POWER_INRUSH para o dispositivo. O sinalizador notifica o power manager de que esses dispositivos devem ser ligados um de cada vez, em sequência com outros dispositivos desse tipo, para evitar sobrecarregar a fonte de alimentação. O power manager garante que apenas um IRP de alimentação esteja ativo em qualquer lugar do sistema a qualquer momento.
A partir do Windows Vista, os drivers podem definir o sinalizador DO_POWER_PAGABLE e o sinalizador DO_POWER_INRUSH. No Windows Server 2003, Windows XP e Windows 2000, os drivers não podem definir o sinalizador DO_POWER_PAGABLE e o sinalizador DO_POWER_INRUSH.