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
// ...
}