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