Advertencia C6381

La API de apagado 'function' requiere un dwReason o lpMessage válido

Comentarios

Esta advertencia se emite si InitiateSystemShutdownEx se llama a:

  • Sin pasar un motivo de apagado válido (dwReason). Si dwReason el parámetro es cero, el valor predeterminado es un apagado indefinido. De forma predeterminada, también es un apagado no planeado. Debe usar uno de los códigos de motivo del apagado del sistema para este parámetro.

  • Sin pasar un mensaje de apagado (lpMessage).

Se recomienda usar los parámetros adecuados al llamar a esta API para ayudar a los administradores del sistema a determinar la causa del apagado.

Nombre del análisis de código: SHUTDOWN_API

Ejemplo

El código siguiente genera esta advertencia porque dwReason es cero y lpMessage es null:

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

Para corregir esta advertencia, especifique dwReason e lpMessage, como se muestra en el código siguiente:

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