HalQueryEnvironmentVariableInfoEx
NTSTATUS __stdcall HalQueryEnvironmentVariableInfoEx(
UINT64 Attributes,
UINT64 *MaximumVariableStorageSize,
UINT64 *RemainingVariableStorageSize,
UINT64 *MaximumVariableSize){
char v5;
unsigned int v6;
unsigned int v7;
NTSTATUS VariableInfo;
struct _GROUP_AFFINITY Affinity;
struct _GROUP_AFFINITY PreviousAffinity;
Affinity = 0i64;
PreviousAffinity = 0i64;
if( !HalFirmwareTypeEfi )
return -1073741822;
v5 = 1;
if( (Attributes & 1) == 0 )
return -1073741811;
v6 = Attributes | 6;
if( KeGetCurrentIrql() >= 2u )
{
v5 = 0;
}
else
{
v7 = KiProcessorIndexToNumberMappingTable[*((unsigned int *)KeGetPcr() + 105)];
Affinity.Reserved[1] = 0;
Affinity.Reserved[2] = 0;
*(_DWORD *)&Affinity.Group = (unsigned __int16)(v7 >> 6);
Affinity.Mask = 1i64 << (v7 & 0x3F);
KeSetSystemGroupAffinityThread(&Affinity, &PreviousAffinity);
}
VariableInfo = HalEfiQueryVariableInfo(v6);
if( v5 )
KeRevertToUserGroupAffinityThread(&PreviousAffinity);
return VariableInfo;
}Referenced by:
IopQueryEnvironmentVariableInfoHal