Compartilhar via


XXX_PowerUp (Device Manager)

Windows Mobile Not SupportedWindows Embedded CE Supported

9/8/2008

Essa função restaura energia para um dispositivo.

Syntax

void XXX_PowerUp(
  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 energia restaurar para um dispositivo. O OS pode chamar esta função quando ele está prestes a deixar de energia-modo salvar. O driver também poderá receber um separar Power-up solicitação a partir de Power Manager antes de XXX_PowerUp 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, essa função só deve executar o exigido hardware-nível recuperação. XXX_PowerUp 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_PowerUp Defina um variável global para indicar que ocorreu uma queda de energia. Se a recuperação completa é tempo consumindo ou requer serviços OS que não são disponível na energia retornos de chamada, esta função deve sinalizar um segmento driver para o processo completo. 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_PowerDown (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