C6381

Aviso C6381: Desligamento de API <function> requer um dwReason válido ou lpMessage

Esse aviso é emitido se InitiateSystemShutdownEx for chamado:

  • Sem passar uma razão de desligamento válido (dwReason). Se o parâmetro de dwReason for zero, o padrão é um desligamento indefinido. Por padrão, é também um desligamento não planejado. Você deve usar um dos códigos de razão de desligamento do sistema para este parâmetro.

  • Sem passar uma mensagem de desligamento (lpMessage).

Recomendamos que você use parâmetros adequados ao chamar essa API para ajudar os administradores de sistema para determinar a causa do desligamento.

Exemplo

O código a seguir gera este aviso porque dwReason é zero e lpMessage é nulo:

void f()
{
  //...
  BOOL bRet;
  bRet = InitiateSystemShutdownEx( NULL,
                                   NULL, // message
                                   0,        
                                   FALSE,    
                                   TRUE,     
                                   0);  // shutdown reason
  // ...
}

Para corrigir esse aviso, especifica dwReason e lpMessage, conforme mostrado no código a seguir:

#include <windows.h>
void f()
{
  //...
  BOOL bRet;
  bRet = InitiateSystemShutdownEx( NULL,
                               "Hardware Failure",  // message  
                               0,        
                               FALSE,    
                               TRUE,     
                               SHTDN_REASON_MAJOR_HARDWARE ); // reason
  // ...
}