ExpQueryInterruptSteeringInformation

INT64 __fastcall ExpQueryInterruptSteeringInformation(
        VOID *InputBuffer,
        UINT64 InputBufferLength,
        VOID *SystemInformation,
        UINT64 SystemInformationLength,
        UINT64 *ReturnLength){
  _DWORD *v5; 
  int v6; 
  char v7; 
  bool v8; 
  unsigned int v9; 
  BOOL v11; 
  GROUP_AFFINITY InterruptAffinity; 
  v5 = SystemInformation;
  InterruptAffinity = 0i64;
  if( *((_BYTE *)KeGetCurrentThread() + 562) )
    return(unsigned int)-1073741790;
  if( !InputBuffer || (_DWORD)InputBufferLength != 24 )
    return(unsigned int)-1073741820;
  v6 = *(_DWORD *)InputBuffer;
  LOBYTE(InputBufferLength) = *((_BYTE *)InputBuffer + 4);
  LOBYTE(SystemInformation) = *((_BYTE *)InputBuffer + 5);
  v7 = *((_BYTE *)InputBuffer + 6);
  InterruptAffinity = *(GROUP_AFFINITY *)((char *)InputBuffer + 8);
  if( (unsigned int)SystemInformationLength < 4 )
  {
    if( ReturnLength )
      *(_DWORD *)ReturnLength = 4;
    return(unsigned int)-1073741820;
  }
  *v5 = 0;
  if( (_BYTE)InputBufferLength && v6 == -1 )
  {
    v8 = KeIntSteerIsSteeringEnabled() == 0;
  }
  else
  {
    v11 = (_BYTE)SystemInformation != 0;
    LOBYTE(SystemInformation) = v7;
    v8 = (unsigned int)KeIntSteerGetSteeringMode(
                         (UINT8)InputBuffer,
                         InputBufferLength,
                         (INT64)SystemInformation,
                         (KINTERRUPT_MODE)v11,
                         &InterruptAffinity) == 0;
  }
  if( !v8 )
    *v5 = 1;
  return v9;
}

Referenced by:

ExpQuerySystemInformation