SeQuerySecureBootPolicyValue
INT64 __fastcall SeQuerySecureBootPolicyValue(
const _UNICODE_STRING *ValuePath,
const _UNICODE_STRING *ValueName,
UINT64 ValueType,
VOID *Data,
UINT64 DataSize,
UINT64 *ResultDataSize){
unsigned int v7;
int PolicyValueByRef;
_DWORD *MatchingRegistryRule;
UINT64 v11;
size_t Size;
void *Src;
Src = 0i64;
LODWORD(Size) = 0;
v7 = ValueType;
if( qword_140CF4AF8 )
{
MatchingRegistryRule = SepSecureBootFindMatchingRegistryRule(
(__int64)ValuePath,
&ValuePath->Length,
&ValueName->Length);
if( MatchingRegistryRule )
{
PolicyValueByRef = SepSecureBootGetPolicyValueByRef(
(UINT16 *)(qword_140CF9DA0 + (unsigned int)MatchingRegistryRule[3]),
v7,
&Src,
(INT64 *)&Size);
if( PolicyValueByRef >= 0 )
{
v11 = (unsigned int)Size;
*(_DWORD *)ResultDataSize = Size;
if( Data )
{
if( (unsigned int)DataSize >= (unsigned int)v11 )
memmove((UINT8 *)Data, (UINT8 *)Src, v11);
else
return(unsigned int)-1073741789;
}
}
}
else
{
return(unsigned int)-1073741772;
}
}
else
{
return(unsigned int)-2143092730;
}
return(unsigned int)PolicyValueByRef;
}Referenced by:
No references.