HvlQueryDetailInfo
NTSTATUS __stdcall HvlQueryDetailInfo(VOID *SystemInformation, UINT64 SystemInformationLength, UINT64 *Length){
_DWORD *v3;
_DWORD *v4;
NTSTATUS result;
_HV_VENDOR_AND_MAX_FUNCTION HvVendorAndMaxFunctionOut[7];
v4 = v3;
if( (_DWORD)SystemInformationLength == 112 )
{
memset(HvVendorAndMaxFunctionOut, 0i64, sizeof(HvVendorAndMaxFunctionOut));
HviGetHypervisorVendorAndMaxFunction(HvVendorAndMaxFunctionOut);
HviGetHypervisorInterface((_HV_HYPERVISOR_INTERFACE_INFO *)&HvVendorAndMaxFunctionOut[1]);
HviGetHypervisorVersion((_HV_HYPERVISOR_VERSION_INFO *)&HvVendorAndMaxFunctionOut[2]);
HviGetHypervisorFeatures((_HV_X64_HYPERVISOR_FEATURES *)&HvVendorAndMaxFunctionOut[3]);
HviGetHardwareFeatures((INT64)&HvVendorAndMaxFunctionOut[4]);
HviGetEnlightenmentInformation((__int32 *)&HvVendorAndMaxFunctionOut[5]);
HviGetImplementationLimits((_HV_IMPLEMENTATION_LIMITS *)&HvVendorAndMaxFunctionOut[6]);
result = 0;
*(_HV_VENDOR_AND_MAX_FUNCTION *)SystemInformation = HvVendorAndMaxFunctionOut[0];
*((_HV_VENDOR_AND_MAX_FUNCTION *)SystemInformation + 1) = HvVendorAndMaxFunctionOut[1];
*((_HV_VENDOR_AND_MAX_FUNCTION *)SystemInformation + 2) = HvVendorAndMaxFunctionOut[2];
*((_HV_VENDOR_AND_MAX_FUNCTION *)SystemInformation + 3) = HvVendorAndMaxFunctionOut[3];
*((_HV_VENDOR_AND_MAX_FUNCTION *)SystemInformation + 4) = HvVendorAndMaxFunctionOut[4];
*((_HV_VENDOR_AND_MAX_FUNCTION *)SystemInformation + 5) = HvVendorAndMaxFunctionOut[5];
*((_HV_VENDOR_AND_MAX_FUNCTION *)SystemInformation + 6) = HvVendorAndMaxFunctionOut[6];
*v4 = 112;
}
else
{
result = -1073741584;
*v3 = 0;
}
return result;
}Referenced by:
ExpQuerySystemInformation