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.