PopPowerRequestCreateInfo

NTSTATUS __stdcall PopPowerRequestCreateInfo(
        COUNTED_REASON_CONTEXT *CountedReasonContext,
        UINT8 SpecialRequest,
        PVOID *ReturnHandle){
  void *v5; 
  NTSTATUS inserted; 
  int UserPowerRequest; 
  unsigned int *v8; 
  UINT64 v10; 
  void *Object[5]; 
  INT64 v12; 
  PVOID Handle; 
  v12 = 0i64;
  Handle = 0i64;
  Object[0] = 0i64;
  if( *((_BYTE *)KeGetCurrentThread() + 562) )
  {
    inserted = PoCaptureReasonContext((UINT64)CountedReasonContext, 1, 0i64, 1, 0i64, &v12);
    if( inserted >= 0 )
    {
      v5 = (void *)v12;
      UserPowerRequest = PopCreateUserPowerRequest((INT64 *)Object, SpecialRequest, v12);
      v8 = (unsigned int *)Object[0];
      inserted = UserPowerRequest;
      if( UserPowerRequest >= 0 )
      {
        v5 = 0i64;
        ObfReferenceObjectWithTag(Object[0], 0x72506F50u);
        LODWORD(v10) = 0;
        inserted = ObInsertObjectEx(v8, 0i64, 0i64, 0i64, v10, 0i64, &Handle);
        if( inserted >= 0 )
          PopNotifySessionUserPowerRequestCreated(v8[4], v8[7], (INT64)Handle);
      }
      if( v8 )
        ObfDereferenceObjectWithTag(v8, 0x72506F50ui64);
    }
    else
    {
      v5 = 0i64;
    }
  }
  else
  {
    v5 = (void *)v12;
    inserted = -1073741637;
  }
  if( ReturnHandle )
    *ReturnHandle = Handle;
  if( v5 )
    PoDestroyReasonContext(v5);
  return inserted;
}

Referenced by:

NtPowerInformation