PoShutdownBugCheck
VOID __stdcall __noreturn PoShutdownBugCheck(
UINT8 AllowCrashDump,
UINT64 BugCheckCode,
UINT64 BugCheckParameter1,
UINT64 BugCheckParameter2,
UINT64 BugCheckParameter3,
UINT64 BugCheckParameter4){
UINT32 v8;
VOID *CurrentThreadProcessId;
void *v11;
void *v12;
_ETHREAD *CurrentThread;
_EPROCESS *Process;
VOID *CurrentThreadId;
VOID *v16;
UINT32 v17;
int v18;
UINT64 v19;
UINT64 v20;
UINT64 v21;
UINT64 v22;
_LARGE_INTEGER Interval;
v18 = 0;
v8 = BugCheckCode;
if( PopCriticalShutdownInProgress )
{
Interval.QuadPart = -300000000i64;
KeDelayExecutionThread(0, 0, &Interval);
}
PopInternalAddToDumpFile(0i64, 0i64, 0i64);
Process = KeGetCurrentThread()->ApcState.Process;
if( !AllowCrashDump )
{
Process = 0i64;
IoConfigureCrashDump(CrashDumpDisable, 0);
}
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
CurrentThreadId = PsGetCurrentThreadId();
CurrentThreadProcessId = PsGetCurrentThreadProcessId();
v11 = (void *)BugCheckParameter3;
v12 = (void *)BugCheckParameter4;
v16 = CurrentThreadProcessId;
v17 = v8;
v19 = BugCheckParameter1;
v20 = BugCheckParameter2;
v21 = BugCheckParameter3;
v22 = BugCheckParameter4;
qword_140C23290 = &CurrentThread;
ZwInitiatePowerAction(PowerActionShutdownReset, PowerSystemSleeping3, 0xC0000004ui64, 0);
KeBugCheckEx(v8, (PVOID)BugCheckParameter1, (PVOID)BugCheckParameter2, v11, v12);
}Referenced by:
ExpSystemErrorHandler2