Condividi tramite


C6381

avviso C6381: L'API di chiusura <funzione> richiede un dwReason o lpMessage valido

L'avviso viene emesso se viene chiamato InitiateSystemShutdownEx:

  • Senza passare un motivo valido di arresto (dwReason). Se il parametro dwReason è zero, il valore predefinito è un arresto non definito. Per impostazione predefinita, si tratta anche di un arresto non pianificato. Per questo parametro è consigliabile utilizzare uno dei codici per i motivi di arresto del sistema.

  • Senza passare un messaggio di arresto (lpMessage).

Si consiglia di utilizzare i parametri appropriati per la chiamata a questa API, in modo da consentire agli amministratori di sistema di determinare la causa dell'arresto.

Esempio

Il codice riportato di seguito genera questo avviso in quanto dwReason è zero e lpMessage è null:

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

Per risolvere il problema, specificare dwReason e lpMessage come riportato nel codice seguente:

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