HviGetIptFeatures
CHAR __stdcall HviGetIptFeatures(INT32 *a1){
__int32 v2;
__int64 v3;
_HV_VENDOR_AND_MAX_FUNCTION HvVendorAndMaxFunctionOut;
_HV_X64_HYPERVISOR_FEATURES HvFeaturesOut;
HvVendorAndMaxFunctionOut = 0i64;
HvFeaturesOut = 0i64;
LOBYTE(v2) = HviIsHypervisorMicrosoftCompatible();
if( (_BYTE)v2
&& (HviGetHypervisorVendorAndMaxFunction(&HvVendorAndMaxFunctionOut),
HvVendorAndMaxFunctionOut.MaxFunction >= 0x4000000B)
&& (HviGetHypervisorFeatures(&HvFeaturesOut), (HvFeaturesOut._bf_8 & 0x800000000000000i64) != 0) )
{
v3 = __cpuid(1073741835, 0);
v2 = EAX(v3);
*a1 = v2;
a1[1] = EBX(v3);
a1[2] = ECX(v3);
a1[3] = EDX(v3);
}
else
{
*(_QWORD *)a1 = 0i64;
*((_QWORD *)a1 + 1) = 0i64;
}
return v2;
}Referenced by:
KiGetIptInfo