InitializeDynamicPartitioningPolicy

VOID __fastcall InitializeDynamicPartitioningPolicy(const CHAR *Options){
  char IsAnyHypervisorPresent; 
  WCHAR v2; 
  const WCHAR *v3; 
  struct _UNICODE_STRING DestinationString; 
  UINT64 ResultDataSize; 
  UINT64 Type; 
  int Data; 
  HIDWORD(ResultDataSize) = HIDWORD(Options);
  LODWORD(ResultDataSize) = 0;
  LODWORD(Type) = 0;
  Data = 0;
  DestinationString = 0i64;
  if( (HvlpFlags & 2) == 0 )
  {
    IsAnyHypervisorPresent = HviIsAnyHypervisorPresent();
    v3 = L"Kernel-VirtualDynamicPartitioningSupported";
    if( !IsAnyHypervisorPresent )
      v3 = L"Kernel-DynamicPartitioningSupported";
    RtlInitUnicodeString(&DestinationString, v3, v2);
    if( ZwQueryLicenseValue(&DestinationString, &Type, &Data, 4ui64, &ResultDataSize) >= 0
      && Data
      && (_DWORD)ResultDataSize == 4
      && (_DWORD)Type == 4
      && (HvlpFlags & 4) == 0 )
    {
      KeDynamicPartitioningSupported = 1;
      KUSER_SHARED_DATA.SharedDataFlags |= 0x20u;
    }
  }
}

Referenced by:

InitBootProcessor