Предупреждение C6381

Api завершения работы "function" требует допустимого dwReason или lpMessage

Замечания

Это предупреждение выдается, если InitiateSystemShutdownEx вызывается:

  • Без передачи допустимой причины завершения работы (dwReason). Если dwReason параметр равен нулю, значение по умолчанию является неопределенным завершением работы. По умолчанию это также незапланированное завершение работы. Для этого параметра следует использовать один из кодов причин завершения работы системы.

  • Без передачи сообщения о завершении работы (lpMessage).

Рекомендуется использовать соответствующие параметры при вызове этого API, чтобы помочь системным администраторам определить причину завершения работы.

Имя анализа кода: SHUTDOWN_API

Пример

Следующий код создает это предупреждение, так как dwReason равен нулю, а lpMessage имеет значение NULL:

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

Чтобы исправить это предупреждение, укажите dwReason и lpMessage, как показано в следующем коде:

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