C6381

警告 C6381:Shutdown API <function> 需要一个有效的 dwReason 或 lpMessage

如果调用 InitiateSystemShutdownEx,将会在以下情况下发出此警告:

  • 未传递有效的关闭原因 (dwReason)。 如果 dwReason 参数为零,则默认值为未定义的关闭。 默认情况下,它也是未计划的关闭。 对于此参数,应当使用某个系统关闭原因代码。

  • 未传递关闭消息 (lpMessage)。

建议您在调用此 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
  // ...
}