Udostępnij za pośrednictwem


C6381

ostrzeżenie C6381: zamknięcie interfejsu API <function> wymaga prawidłowego dwReason lub lpMessage

To ostrzeżenie jest zgłaszane, jeśli InitiateSystemShutdownEx jest wywoływane:

  • Bez prawidłowej przyczyny zamknięcia (dwReason).Parametr dwReason jest równy zeru, domyślne zamknięcie jest niezdefiniowane.Domyślnie jest to również nieplanowane zamknięcie.Dla tego parametru należy używać jednego z kodów System Shutdown Reason Codes.

  • Bez przekazywania komunikatu zamknięcia (lpMessage).

Firma Microsoft zaleca użycie odpowiednich parametrów podczas wywoływania tego interfejsu API, aby pomóc administratorom systemu w określeniu przyczyny zamknięcia systemu.

Przykład

Poniższy kod generuje to ostrzeżenie, ponieważ dwReason jest równy zero i lpMessage ma wartość null:

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

Aby poprawić to ostrzeżenie, należy określić dwReason i lpMessage, jak pokazano w poniższym kodzie:

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