BiAcquirePrivilege
NTSTATUS __fastcall BiAcquirePrivilege(unsigned int a1, __int64 a2){
char v4;
NTSTATUS result;
int v6;
UINT8 WasEnabled;
__int64 ThreadInformation;
WasEnabled = 0;
if( (*((_DWORD *)KeGetCurrentThread() + 324) & 8) != 0 )
{
v4 = 1;
}
else
{
v4 = 0;
result = RtlImpersonateSelfEx(SecurityImpersonation, 0i64, 0i64);
if( result < 0 )
return result;
}
v6 = BiAdjustPrivilege(a1, 1u, &WasEnabled);
if( v6 < 0 )
{
if( !v4 )
{
ThreadInformation = 0i64;
ZwSetInformationThread((PVOID)0xFFFFFFFFFFFFFFFEi64, ThreadImpersonationToken, &ThreadInformation, 8ui64);
}
}
else
{
*(_BYTE *)(a2 + 4) = WasEnabled;
*(_BYTE *)(a2 + 5) = v4;
*(_DWORD *)a2 = a1;
}
return v6;
}Referenced by:
BiAddBootEntry
BiDeleteBootEntry
BiDeleteEfiVariable
BiEnumerateBootEntries
BiLoadHive
BiModifyBootEntry
BiQueryBootEntryOrder
BiQueryBootOptions
BiSetBootEntryOrder
BiSetBootOptions
BiTranslateFilePath
BiUnloadHiveByName
SiGetEspFromFirmware