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.