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