Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In deze sectie wordt beschreven hoe gastsoftware de aanwezigheid van een hypervisor detecteert en query's uitvoert op de mogelijkheden, functies en versie-informatie met behulp van architectuurspecifieke detectiemechanismen.
Functie- en interfacedetectie (x64)
Gastsoftware communiceert met de hypervisor via verschillende mechanismen. Veel van deze spiegelen de traditionele mechanismen die door software worden gebruikt om te communiceren met de onderliggende processor. Daarom zijn deze mechanismen architectuurspecifiek. In de x64-architectuur worden de volgende mechanismen gebruikt:
- CPUID-instructie: wordt gebruikt voor statische functie- en versiegegevens.
- MSR's (modelspecifieke registers): wordt gebruikt voor status- en controlewaarden.
- Geheugen-toegewezen registers: wordt gebruikt voor status- en controlewaarden.
- Processoronderbreken: wordt gebruikt voor asynchrone gebeurtenissen, meldingen en berichten.
Naast deze architectuurspecifieke interfaces biedt de hypervisor een eenvoudige procedurele interface die is geïmplementeerd met hypercalls.
Detectie van hypervisor
Voordat u hypervisorinterfaces gebruikt, moet de software eerst bepalen of deze wordt uitgevoerd in een gevirtualiseerde omgeving. Op x64-platforms die aan deze specificatie voldoen, wordt dit gedaan door de CPUID-instructie uit te voeren met een invoerwaarde (EAX) van 1. Bij de uitvoering moet code bit 31 van het register ECX controleren (de 'hypervisor present bit'). Als deze bit is ingesteld, is er een hypervisor aanwezig. In een niet-gevirtualiseerde omgeving is de bit duidelijk.
CPUID.01h.ECX:31 // if set, virtualization present
Als de 'hypervisor present bit' is ingesteld, kunnen extra CPUID-bladbladen worden opgevraagd voor meer informatie over de conforme hypervisor en de bijbehorende mogelijkheden. Twee dergelijke bladeren zijn gegarandeerd beschikbaar: 0x40000000 en 0x40000001. Vervolgens kunnen genummerde bladeren ook beschikbaar zijn.
Standaard bladeren hypervisor CPUID
Wanneer het blad op 0x40000000 een query wordt uitgevoerd, retourneert de hypervisor informatie die het maximale CPUID-bladnummer van de hypervisor en een leverancier-id-handtekening levert.
| Register | Verstrekte informatie |
|---|---|
| EAX | De maximale invoerwaarde voor informatie over de CPUID van de hypervisor |
| EBX | Handtekening voor leverancier-id van hypervisor |
| ECX | Handtekening voor leverancier-id van hypervisor |
| EDX | Handtekening voor leverancier-id van hypervisor |
Als er query's worden uitgevoerd op 0x40000001 het blad, retourneert deze een waarde die een leverancierneutrale hypervisor-interfaceidentificatie vertegenwoordigt. Dit bepaalt de semantiek van de bladeren van 0x4000002 door 0x400000FF.
| Register | Verstrekte informatie |
|---|---|
| EAX | Handtekening van hypervisorinterface. |
| EBX | Gereserveerd |
| ECX | Gereserveerd |
| EDX | Gereserveerd |
Met deze twee bladeren kan de gast de leverancier-id en interface van de hypervisor onafhankelijk opvragen. De leverancier-id wordt alleen verstrekt voor informatieve en diagnostische doeleinden. Het wordt aanbevolen dat software alleen basiscompatibiliteitsbeslissingen op de interfacehandtekening gerapporteerd via leaf 0x40000001.
Microsoft Hypervisor CPUID bladeren
Bij hypervisors die voldoen aan de CPUID-interface van microsoft hypervisor, hebben de 0x40000000 en 0x40000001 leaf-registers de volgende waarden.
Hypervisor CPUID Leaf Range - 0x40000000
EAX bepaalt het maximale CPUID-blad van de hypervisor. EBX-EDX de handtekening van de leverancier-id van de hypervisor bevatten. De handtekening van de leverancier-id mag alleen worden gebruikt voor rapportage- en diagnostische doeleinden.
| Register | Verstrekte informatie |
|---|---|
| EAX | De maximale invoerwaarde voor informatie over de CPUID van de hypervisor. Op Microsoft-hypervisors is dit ten minste 0x40000005. |
| EBX | 0x7263694D— "Micr" |
| ECX | 0x666F736F— "osof" |
| EDX | 0x76482074— "t Hv" |
Identificatie van hypervisor vendor-neutral interface - 0x40000001
EAX bevat de handtekening voor identificatie van de hypervisorinterface. Dit bepaalt de semantiek van de bladeren van 0x40000002 door 0x400000FF.
| Register | Verstrekte informatie |
|---|---|
| EAX | 0x31237648— "Hv#1" |
| EBX | Gereserveerd |
| ECX | Gereserveerd |
| EDX | Gereserveerd |
Hypervisors die voldoen aan de interface 'Hv#1', bieden ten minste de volgende bladeren.
Hypervisor-systeemidentiteit - 0x40000002
| Register | Bits | Verstrekte informatie |
|---|---|---|
| EAX | Buildnummer | |
| EBX | 31-16 | Hoofdversie |
| 15-0 | Kleine versie |
Identificatie van hypervisorfuncties - 0x40000003
EAX en EBX geven aan welke functies beschikbaar zijn voor de partitie op basis van de huidige partitiebevoegdheden.
| Register | Bits | Verstrekte informatie |
|---|---|---|
| EAX | Komt overeen met bits 31-0 van HV_PARTITION_PRIVILEGE_MASK | |
| EBX | Komt overeen met bits 63-32 van HV_PARTITION_PRIVILEGE_MASK | |
| ECX | 4-0 | Gereserveerd |
| 5 | Invariant Mperf is beschikbaar | |
| 6 | Supervisor-schaduwstack is beschikbaar | |
| 7 | Architectural PMU is beschikbaar | |
| 8 | Het onderscheppen van uitzonderingen is beschikbaar | |
| 31-9 | Gereserveerd | |
| EDX | 0 | Afgeschaft (eerder aangegeven beschikbaarheid van de MWAIT-instructie) |
| 1 | Ondersteuning voor gastopsporing is beschikbaar | |
| 2 | Ondersteuning voor prestatiemeter is beschikbaar | |
| 3 | Ondersteuning voor dynamische partitioneringsevenementen van fysieke CPU is beschikbaar | |
| 4 | Ondersteuning voor het doorgeven van hypercall-invoerparameterblok via XMM-registers is beschikbaar | |
| 5 | Er is ondersteuning beschikbaar voor een status van een virtuele gast die niet actief is | |
| 6 | Ondersteuning voor de slaapstand van de hypervisor is beschikbaar | |
| 7 | Ondersteuning voor het uitvoeren van query's op NUMA-afstanden is beschikbaar | |
| 8 | Ondersteuning voor het bepalen van timerfrequenties is beschikbaar | |
| 9 | Ondersteuning voor het injecteren van synthetische machinecontroles is beschikbaar | |
| 10 | Ondersteuning voor gastcrash-MSR's is beschikbaar | |
| 11 | Ondersteuning voor foutopsporings-MSR's is beschikbaar | |
| 12 | Ondersteuning voor NPIEP is beschikbaar | |
| 13 | DisableHypervisorAvailable | |
| 14 | ExtendedGvaRangesForFlushVirtualAddressListAvailable | |
| 15 | Ondersteuning voor het retourneren van hypercall-uitvoer via XMM-registers is beschikbaar | |
| 16 | Gereserveerd | |
| 17 | SintPollingModeAvailable | |
| 18 | HypercallMsrLockAvailable | |
| 19 | Directe synthetische timers gebruiken | |
| 20 | Ondersteuning voor PAT-register beschikbaar voor VSM | |
| 21 | Ondersteuning voor bndcfgs-register beschikbaar voor VSM | |
| 22 | Gereserveerd | |
| 23 | Ondersteuning voor synthetische tijdonthalingstimer beschikbaar | |
| 25-24 | Gereserveerd | |
| 26 | De LBR-functie (Last Branch Record) van Intel wordt ondersteund | |
| 31-27 | Gereserveerd |
Implementatieaanbeveling - 0x40000004
Geeft aan welk gedrag de hypervisor het besturingssysteem aanbeveelt voor optimale prestaties.
| Register | Bits | Verstrekte informatie |
|---|---|---|
| EAX | 0 | Het is raadzaam hypercall te gebruiken voor adresruimteswitches in plaats van MOV naar CR3-instructie. |
| 1 | U kunt het beste hypercall gebruiken voor lokale TLB-flushes in plaats van INVLPG of MOV naar CR3-instructies. | |
| 2 | U kunt het beste hypercall gebruiken voor externe TLB-flushes in plaats van interprocessoronderbreken. | |
| 3 | U wordt aangeraden MSR's te gebruiken voor toegang tot APIC-registers EOI, ICR en TPR in plaats van hun geheugen-toegewezen tegenhangers. | |
| 4 | U kunt het beste de door de hypervisor geleverde MSR gebruiken om een systeemRESET te starten. | |
| 5 | U kunt het beste ontspannen timing gebruiken voor deze partitie. Als deze wordt gebruikt, moet de VM time-outs voor watchdogs uitschakelen die afhankelijk zijn van de tijdige levering van externe interrupts. | |
| 6 | U kunt het beste opnieuw toewijzen met DMA. | |
| 7 | U kunt het beste onderbreken opnieuw toewijzen. | |
| 8 | Gereserveerd. | |
| 9 | U wordt aangeraden AutoEOI af te schalen. | |
| 10 | Het gebruik van SyntheticClusterIpi hypercall aanbevelen. | |
| 11 | U kunt het beste de nieuwere ExProcessorMasks-interface gebruiken. | |
| 12 | Geeft aan dat de hypervisor is genest binnen een Hyper-V partitie. | |
| 13 | U kunt het beste INT gebruiken voor MBEC-systeemoproepen. | |
| 14 | Raad een geneste hypervisor aan met behulp van de verlichte VMCS-interface. Geeft ook aan dat er mogelijk extra geneste verlichting beschikbaar is (zie leaf 0x4000000A). | |
| 15 | UseSyncedTimeline: geeft aan dat de partitie de bias QueryPerformanceCounter moet gebruiken die wordt geleverd door de hoofdpartitie. | |
| 16 | Gereserveerd | |
| 17 | UseDirectLocalFlushEntire : geeft aan dat de gast CR4 moet in-/uitschakelen. PGE om de hele TLB leeg te maken, omdat dit beter presteert dan het maken van een hypercall. | |
| 18 | NoNonArchitecturalCoreSharing - geeft aan dat kerndeling niet mogelijk is. Dit kan worden gebruikt als optimalisatie om de prestatieoverhead van STIBP te voorkomen. | |
| 31-19 | Gereserveerd | |
| EBX | Aanbevolen aantal pogingen om een spinlockfout opnieuw uit te voeren voordat de hypervisor op de hoogte wordt gebracht van de fouten. 0xFFFFFFFF geeft aan dat ze nooit op de hoogte zijn. | |
| ECX | 6-0 | ImplementedPhysicalAddressBits : rapporteert de fysieke adresbreedte (MAXPHYADDR) die door de fysieke processors van het systeem is gerapporteerd. Als alle bits 0 bevatten, wordt de functie niet ondersteund. Houd er rekening mee dat de gerapporteerde waarde het werkelijke aantal fysieke adres-bits is en niet de bitpositie die wordt gebruikt om dat getal weer te geven. |
| 31-7 | Gereserveerd | |
| EDX | Gereserveerd |
Implementatielimieten voor hypervisor - 0x40000005
Beschrijft de schaallimieten die worden ondersteund in de huidige hypervisor-implementatie. Als een waarde nul is, geeft de hypervisor de bijbehorende informatie niet weer; anders hebben ze deze betekenissen.
| Register | Verstrekte informatie |
|---|---|
| EAX | Het maximum aantal ondersteunde virtuele processors |
| EBX | Het maximum aantal ondersteunde logische processors |
| ECX | Het maximum aantal fysieke interruptvectoren dat beschikbaar is voor het opnieuw toewijzen van interrupts. |
| EDX | Gereserveerd |
Hardwarefuncties voor implementatie - 0x40000006
Geeft aan welke hardwarespecifieke functies zijn gedetecteerd en momenteel worden gebruikt door de hypervisor.
| Register | Bits | Verstrekte informatie |
|---|---|---|
| EAX | 0 | Ondersteuning voor APIC-overlayhulp wordt gedetecteerd en in gebruik. |
| 1 | Ondersteuning voor MSR-bitmaps wordt gedetecteerd en in gebruik. | |
| 2 | Ondersteuning voor prestatiemeteritems voor architectuur wordt gedetecteerd en in gebruik. | |
| 3 | Ondersteuning voor adresomzetting op het tweede niveau wordt gedetecteerd en in gebruik. | |
| 4 | Ondersteuning voor opnieuw toewijzen van DMA's wordt gedetecteerd en in gebruik. | |
| 5 | Ondersteuning voor het opnieuw toewijzen van interrupts wordt gedetecteerd en in gebruik. | |
| 6 | Geeft aan dat er een geheugenpatrouillescrubber aanwezig is in de hardware. | |
| 7 | DMA-beveiliging wordt gebruikt. | |
| 8 | HPET wordt aangevraagd. | |
| 9 | Synthetische timers zijn vluchtig. | |
| 13-10 | Het hypervisorniveau van de huidige gast - '0' als deze niet is genest. | |
| 14 | Fysieke doelmodus vereist. | |
| 15 | GEBRUIK VMFUNC voor aliastoewijzingsswitch. | |
| 16 | Ondersteuning voor hardwaregeheugennulering is aanwezig. | |
| 17 | Ondersteuning voor Onbeperkte gast is aanwezig. | |
| 18 | Ondersteuning voor resourcetoewijzing (RDT-A, PQOS-A) is aanwezig. | |
| 19 | Ondersteuning voor resourcebewaking (RDT-M, PQOS-M) is aanwezig. | |
| 20 | Ondersteuning voor gast virtuele PMU is aanwezig. | |
| 21 | Ondersteuning voor virtuele gast-LBR is aanwezig. | |
| 22 | Ondersteuning voor virtuele IPT van gasten is aanwezig. | |
| 23 | Ondersteuning voor APIC-emulatie is aanwezig. | |
| 24 | De ACPI WDAT-tabel wordt gedetecteerd en wordt gebruikt door de hypervisor. | |
| 31-25 | Gereserveerd | |
| EBX | Gereserveerd | |
| ECX | Gereserveerd | |
| EDX | Gereserveerd |
Identificatie van geneste hypervisorfuncties - 0x40000009
Beschrijft de functies die beschikbaar zijn voor de partitie door de hypervisor bij het uitvoeren van geneste items. EAX beschrijft de toegang tot virtuele MSR's. EDX beschrijft de toegang tot hypercalls.
| Register | Bits | Verstrekte informatie |
|---|---|---|
| EAX | 1-0 | Gereserveerd |
| 2 | AccessSynicRegs | |
| 3 | Gereserveerd | |
| 4 | AccessIntrCtrlRegs | |
| 5 | AccessHypercallMsrs | |
| 6 | AccessVpIndex | |
| 11-7 | Gereserveerd | |
| 12 | AccessReenlightenmentControls | |
| 31-13 | Gereserveerd | |
| EBX | Gereserveerd | |
| ECX | Gereserveerd | |
| EDX | 3-0 | Gereserveerd |
| 4 | XmmRegistersForFastHypercallAvailable | |
| 14-5 | Gereserveerd | |
| 15 | FastHypercallOutputAvailable | |
| 16 | Gereserveerd | |
| 17 | SintPollingModeAvailable | |
| 31-18 | Gereserveerd |
Functies voor geneste virtualisatie van hypervisor - 0x4000000A
Geeft aan welke geneste virtualisatieoptimalisaties beschikbaar zijn voor een geneste hypervisor.
| Register | Bits | Verstrekte informatie |
|---|---|---|
| EAX | 7-0 | Verlichte VMCS-versie (laag) |
| 15-8 | Verlichte VMCS-versie (hoog) | |
| 16 | Gereserveerd | |
| 17 | Geeft ondersteuning aan voor directe virtuele flush hypercalls. | |
| 18 | Geeft ondersteuning aan voor de HvCallFlushGuestPhysicalAddressSpace en HvCallFlushGuestPhysicalAddressList hypercalls (op x64-platforms). | |
| 19 | Geeft ondersteuning aan voor het gebruik van een verlichte MSR-bitmap. | |
| 20 | Geeft ondersteuning aan voor het combineren van virtualisatie-uitzonderingen in de foutklasse van de pagina. | |
| 21 | Geeft ondersteuning aan voor niet-nulwaarde van het veld 0x00002802 (GuestIa32DebugCtl) in de VMCS. | |
| 22 | Geeft ondersteuning aan voor de verlichte TLB op AMD-platforms. ASID-flushes zijn niet van invloed op TLB-vermeldingen die zijn afgeleid van de NPT. Hypercalls moeten worden gebruikt om NPT TLB-vermeldingen ongeldig te maken. Geeft ook ondersteuning aan voor de HvCallFlushGuestPhysicalAddressSpace en HvCallFlushGuestPhysicalAddressList hypercalls. | |
| 31-21 | Gereserveerd | |
| EBX | 0 | Geeft ondersteuning aan voor de velden GuestPerfGlobalCtrl en HostPerfGlobalCtrl in de verlichte VMCS. |
| 31-1 | Gereserveerd | |
| ECX | Gereserveerd | |
| EDX | Gereserveerd |
Versioning
De informatie over de hypervisorversie wordt gecodeerd in leaf 0x40000002. Er zijn twee versienummers opgegeven: de hoofdversie en de serviceversie.
De hoofdversie bevat een primaire en secundaire versienummer en een buildnummer. Deze komen overeen met de releasenummers van Microsoft Windows. De serviceversie beschrijft wijzigingen die zijn aangebracht in de hoofdversie.
Clients worden sterk aangeraden om te controleren op hypervisorfuncties door CPUID te 0x400000030x40000005 gebruiken in plaats van te vergelijken met versiebereiken.
Functie- en interfacedetectie (ARM64)
In de ARM64-architectuur worden de volgende mechanismen gebruikt voor functie- en interfacedetectie:
- HvRegister-query's via HvCallGetVpRegisters – Wordt gebruikt voor statische functie- en versiegegevens.
- Geheugen-toegewezen registers: wordt gebruikt voor status- en controlewaarden.
Naast deze architectuurspecifieke interfaces biedt de hypervisor een eenvoudige procedurele interface die is geïmplementeerd met hypercalls.
Detectie van hypervisor
Voordat u de meeste hypervisorinterfaces gebruikt, moet de software eerst bepalen of deze wordt uitgevoerd in een gevirtualiseerde omgeving.
In ARM64 kan gastsoftware de hypervisor detecteren met behulp van de standaardinterface van SMCCC (SMC Calling Convention). De detectie wordt uitgevoerd met behulp van de HVC- of SMC-instructie met de functie-id 0xC600FF0 in X0 (dit komt overeen met een 64-bits leverancierspecifieke hypervisoraanroep, VENDOR_HYP_FUNCTION_CODE_UID). De oproep volgt de SMCCC-conventies, waaronder een imm16 van 0. De Microsoft-hypervisor retourneert de volgende waarden die de GUID 4d32ba58-cd24-4764-8eef-6c7516597024vertegenwoordigen:
| Register | Waarde |
|---|---|
| X0 | 0x4d32ba58 |
| X1 | 0xcd244764 |
| X2 | 0x8eef6c75 |
| X3 | 0x16597024 |
Zodra een hypervisor is gedetecteerd, kan gastsoftware query's uitvoeren op hypervisormogelijkheden via synthetische registers met behulp van de Hypercalls HvCallGetVpRegisters . Er kunnen verschillende sleutelregisters worden opgevraagd voordat het register van het gastbesturingssysteem is ingesteld, waardoor vroege detectie van hypervisorfuncties mogelijk is tijdens het opstarten.
Hypervisor-functieregisters
ARM64-platformen doorzoeken hypervisorgegevens via synthetische registers in plaats van CPUID-instructies. Deze registers bieden equivalente informatie aan hun x64 CPUID-tegenhangers en worden geopend via HvCallGetVpRegisters. Alle functieregisters retourneren 128-bits waarden.
Hypervisor System Identity - HvRegisterHypervisorVersion
Retourneert versiegegevens die zijn gecodeerd in een 128-bits waarde. De indeling is identiek aan x64 CPUID leaf 0x40000002, waarbij x64 registerwaarden zijn verpakt in het 128-bits resultaat (EAX in bits 31-0, EBX in bits 63-32, ECX in bits 95-64, EDX in bits 127-96).
Identificatie van hypervisorfuncties - HvRegisterPrivilegesAndFeaturesInfo
Gelijk aan x64 CPUID leaf 0x40000003. Geeft aan welke functies beschikbaar zijn voor de partitie op basis van de huidige partitiebevoegdheden. Retourneert een 128-bits waarde met deze velden:
| Bits | Verstrekte informatie |
|---|---|
| 31-0 | Komt overeen met bits 31-0 van HV_PARTITION_PRIVILEGE_MASK |
| 63-32 | Komt overeen met bits 63-32 van HV_PARTITION_PRIVILEGE_MASK |
| 64 | Ondersteuning voor gastopsporing is beschikbaar. |
| 65 | Ondersteuning voor Performance Monitor is beschikbaar. |
| 66 | Ondersteuning voor dynamische partitioneringsevenementen van fysieke CPU is beschikbaar. |
| 67 | Er is ondersteuning beschikbaar voor een niet-actieve status van een virtuele gast. |
| 68 | Ondersteuning voor de status van de hypervisor slaapstand is beschikbaar. |
| 69 | Ondersteuning voor het uitvoeren van query's op NUMA-afstanden is beschikbaar. |
| 70 | Ondersteuning voor het bepalen van timerfrequenties is beschikbaar. |
| 71 | Ondersteuning voor het injecteren van synthetische machinecontroles is beschikbaar. |
| 72 | Ondersteuning voor gastcrashregisters is beschikbaar. |
| 73 | Gereserveerd. |
| 74 | DisableHypervisorAvailable. |
| 75 | Gereserveerd. |
| 76 | SintPollingModeAvailable. |
| 77 | Gebruik directe synthetische timers. |
| 127-78 | Gereserveerd. |
Implementatieaanbevelingen - HvRegisterFeaturesInfo
Gelijk aan x64 CPUID leaf 0x40000004. Geeft aan welk gedrag de hypervisor het besturingssysteem aanbeveelt voor optimale prestaties. Retourneert een 128-bits waarde.
| Bits | Verstrekte informatie |
|---|---|
| 0 | UseHvRegisterForReset - In ARM64 is dit altijd onwaar (partities moeten in plaats daarvan PSCI-SYSTEM_RESET gebruiken). |
| 1 | U kunt het beste ontspannen timing gebruiken voor deze partitie. Als deze wordt gebruikt, moet de VM time-outs voor watchdogs uitschakelen die afhankelijk zijn van de tijdige levering van externe interrupts. |
| 2 | Het gebruik van SyntheticClusterIpi hypercall aanbevelen. In ARM64 is dit onwaar voor de hoofdpartitie (die rechtstreeks ICC_SGI1R_EL1 moet gebruiken) en waar voor gastpartities. |
| 3 | U kunt het beste de nieuwere ExProcessorMasks-interface gebruiken. |
| 4 | Geeft aan dat de hypervisor is genest binnen een Hyper-V partitie. |
| 5 | Hiermee wordt aangegeven dat de partitie de bias QueryPerformanceCounter moet gebruiken die is opgegeven door de hoofdpartitie. |
| 20-6 | Gereserveerd |
| 21 | UseHypercallForMmioAccess |
| 22 | UseGpaPinningHypercall |
| 23 | WakeVps |
| 25-24 | Gereserveerd |
| 26 | MapPartitionEventLogBuffer |
| 31-27 | Gereserveerd |
| 63-32 | Aanbevolen aantal pogingen om een spinlockfout opnieuw uit te voeren voordat de hypervisor op de hoogte wordt gebracht van de fouten. 0xFFFFFFFF geeft aan dat ze nooit op de hoogte zijn. |
| 127-64 | Gereserveerd |
Implementatielimieten voor hypervisor - HvRegisterImplementationLimitsInfo
Beschrijft de schaallimieten die worden ondersteund in de huidige hypervisor-implementatie. Als een waarde nul is, geeft de hypervisor de bijbehorende informatie niet weer. Retourneert een 128-bits waarde met een indeling die identiek is aan x64 CPUID leaf 0x40000005, waarbij x64 registerwaarden zijn verpakt in het 128-bits resultaat (EAX in bits 31-0, EBX in bits 63-32, ECX in bits 95-64, EDX in bits 127-96).
Hardwarefuncties voor implementatie - HvRegisterHardwareFeaturesInfo
Gelijk aan x64 CPUID leaf 0x40000006. Geeft aan welke hardwarespecifieke functies zijn gedetecteerd en momenteel worden gebruikt door de hypervisor. Retourneert een 128-bits waarde.
| Bits | Verstrekte informatie |
|---|---|
| 0 | Ondersteuning voor prestatiemeteritems voor architectuur wordt gedetecteerd en in gebruik. |
| 1 | Ondersteuning voor adresomzetting op het tweede niveau wordt gedetecteerd en in gebruik. |
| 2 | Ondersteuning voor opnieuw toewijzen van DMA's wordt gedetecteerd en in gebruik. |
| 3 | Ondersteuning voor het opnieuw toewijzen van interrupts wordt gedetecteerd en in gebruik. |
| 4 | Geeft aan dat er een geheugenpatrouillescrubber aanwezig is in de hardware. |
| 5 | DMA-beveiliging wordt gebruikt. |
| 6 | Synthetische timers zijn vluchtig. |
| 127-7 | Gereserveerd |
Versioning
De informatie over de hypervisorversie wordt gecodeerd in HvRegisterHypervisorVersion. De notatie komt overeen met het x64-equivalent.