PoRegisterSystemState
VOID *__stdcall PoRegisterSystemState(VOID *StateHandle, UINT64 Flags){
_DIAGNOSTIC_CONTEXT *v2;
VOID *v3;
int v4;
unsigned int v5;
NTSTATUS v7;
NTSTATUS v8;
unsigned int LegacyPowerRequestFlags;
UINT64 v10;
VOID *PowerRequest;
_DIAGNOSTIC_CONTEXT *Context;
v2 = 0i64;
v3 = 0i64;
v4 = 0;
Context = 0i64;
v5 = Flags;
if( (Flags & 0x7FFFFFF8) == 0 )
{
if( (_DWORD)Flags && (Flags & 0x80000000) == 0i64 )
{
PoSetSystemState(Flags);
}
else
{
PopDiagTraceRegisterSystemState((unsigned int)Flags, StateHandle);
PowerRequest = StateHandle;
v3 = StateHandle;
if( !StateHandle
&& ((v7 = PoCaptureReasonContext(0i64, 0, 0i64, 1u, 0i64, &Context), v2 = Context, v7 < 0)
|| (v8 = PopCreateKernelPowerRequest(&PowerRequest, Context), v3 = PowerRequest, v4 = v8, v8 < 0))
|| (LegacyPowerRequestFlags = PopGetLegacyPowerRequestFlags(v3, v5, 0i64),
PopApplyLegacyPowerRequestFlags(v3, v10, LegacyPowerRequestFlags),
v4 < 0) )
{
if( v2 )
PoDestroyReasonContext(v2);
}
}
}
return v3;
}Referenced by:
No references.