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