SiQuerySystemInformationString
INT64 __fastcall SiQuerySystemInformationString(INT64 a1, VOID *a2, UINT64 a3, UINT64 *a4){
unsigned int v5;
int SystemInformation;
int v8;
UINT8 **PoolWithTag;
unsigned int v10;
v5 = a3;
SystemInformation = ZwQuerySystemInformation();
v8 = SystemInformation;
if( SystemInformation == -1073741789 )
{
PoolWithTag = (UINT8 **)ExAllocatePoolWithTag(PagedPool, 0i64, 0x4B505953ui64);
if( PoolWithTag )
{
v8 = ZwQuerySystemInformation();
if( v8 >= 0 )
{
v10 = *(unsigned __int16 *)PoolWithTag + 2;
*(_DWORD *)a4 = v10;
if( v10 <= v5 )
memmove((UINT8 *)a2, PoolWithTag[1], v10);
else
v8 = -1073741789;
}
ExFreePoolWithTag(PoolWithTag, 0);
}
else
{
return(unsigned int)-1073741670;
}
}
else if( SystemInformation >= 0 )
{
return(unsigned int)-1073741823;
}
return(unsigned int)v8;
}Referenced by:
SyspartGetFirmwarePartition
SyspartGetSystemPartition