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