Compartilhar via


XXX_PowerDown (Device Manager)

Windows Mobile Not SupportedWindows Embedded CE Supported

9/8/2008

Essa função suspende energia para o dispositivo. Ele é útil apenas com dispositivos que podem desligar sob controle software. Esses dispositivos são geralmente, mas não exclusivamente, PC Cards.

Syntax

void XXX_PowerDown(
  DWORD hDeviceContext 
);

Parameters

  • hDeviceContext
    [no] Identificador para o contexto dispositivo. A chamar para o XXX_Init (Device Manager) função retorna esse identificador.

Return Value

Nenhum.

Remarks

Funções de manipulador de energia, XXX_PowerUp (Device Manager) e XXX_PowerDown (Device Manager), executar em modo kernel, e eles não podem ser previamente feita.

A maioria das chamadas função não são permitidas neste modo. Em geral, as funções manipulador de energia não têm permissão para fazer chamadas sistema. A seguinte lista mostra como a sistema operacional (OS) trata um chamada de sistema a partir de XXX_PowerUp função ou a XXX_PowerDown função:

  1. O OS gera o seguinte para a porta depuração kernel.

    ERROR : Power Handler function yield to low priority thread.
    
  2. As chamadas OS o lpNKHaltSystem função.
    Por padrão, lpNKHaltSystem Pára o sistema. Você pode substituir esse comportamento usar como padrão por inicializando lpNKHaltSystem Para apontar para sua função.

Você pode usar opcionalmente DEBUGMSG, RETAILMSG, CeSetPowerOnEvent, e SetInterruptEvent de funções de manipulador de energia. Para obter mais informações sobre o DEBUGMSG e RETAILMSG macros, consulte Depurar macros.

Use o LockPages função para bloqueio na memória todas as páginas codificar e dados acessados por um função de manipulador de energia. De exemplo, se seu driver de dispositivo executa de memória RAM que foi paginável do memória flash NAND ou descompactado de armazenamento, não use o sinalizador DEVFLAGS_LOADLIBRARY. Esse sinalizador permite que as páginas codificar do seu driver de dispositivo ser descartadas do memória RAM e paginada em quando necessário. Se você estiver acessando um arquivo Memory-mapped, certifique-se que essas páginas dados tenham sido bloqueadas em memória RAM com o LockPages função.

As funções manipulador de energia nunca devem gerar uma exceção. A seguinte lista mostra algumas maneiras que exceções podem ser geradas:

  • Referência um ponteiro nulo.
  • Divisão por zero. Isso gera uma exceção na maioria dos microprocessadores.
  • Explicitamente elevar uma exceção SEH ou C++.
  • Uma página-falha.

A seguinte lista mostra como a OS lida com uma exceção gerada a partir uma função manipulador de energia.

  1. O OS gera a seguinte seqüência de caracteres a porta de depuração kernel.

    !Unrecoverable Error: Exception or calling API inside Power Handler
    
  2. As chamadas OS o lpNKHaltSystem função.
    Por padrão, lpNKHaltSystem Pára o sistema. Você pode substituir esse comportamento usar como padrão por inicializando lpNKHaltSystem Para apontar para sua função.

O OS chama essa função para Suspender energia para um dispositivo. O OS pode chamar esta função quando ele está prestes a inserir uma energia-modo salvar. O driver também poderá receber um separar Power-Down solicitação a partir de Power Manager antes de XXX_PowerDown função executa. Por exemplo IOCTL_POWER_SET Talvez um D3 solicitação ou estado de energia D4.

Microsoft recomenda usar o gerenciamento de energia IOCTLs e Power Manager para gerenciar energia ao seu dispositivo. Para obter mais informações, consulte IOCTLs de gerenciamento de energia.

Se você não usar Power Manager, esta função deve apenas desligar o dispositivo. XXX_PowerDown Deve não chamar as funções que podem causar a bloco e ela deve retornar o mais rapidamente possível. Uma estratégia para retornar rapidamente é ter XXX_PowerDown Defina um variável global para indicar que ocorreu uma queda de energia.

XXX_PowerUp e XXX_PowerDown retornos de chamada podem usar CeSetPowerOnEvent Para sinalizar para segmentos driver arbitrário que um suspend ou continuar ciclo ocorreu. Para sinalizar interrupção serviço segmento do driver, use SetInterruptEvent Em vez disso. Device Manager usa o XXX prefixo como um espaço reservado. Ao implementar a interface transmitir, substituir XXX Com um prefixo apropriado para sua implementação ou não decorado usar nomes ponto de entrada em conjunto com DEVFLAGS_NAKEDENTRIES. Para obter mais informações sobre outros válido Sinalizadores valores, consulte ActivateDeviceEx.

Por padrão, as interrupções estão em durante transmitir interface driver entrada pontos.

Requirements

Header Developer Implemented
Library Developer Implemented
Windows Embedded CE Windows CE 1.0 and later

See Also

Reference

ActivateDeviceEx
XXX_Init (Device Manager)
XXX_PowerUp (Device Manager)

Concepts

Device File Names

Other Resources

Controlling Debug Message Output With Macros
Power Management
CeSetPowerOnEvent
IOCTL_POWER_SET
LockPages
lpNKHaltSystem
Power Management I/O Controls
SetInterruptEvent