Geoff Chappell - Software Analyst
The HviIsHypervisorMicrosoftCompatible function tells whether the cpuid instruction is implemented by a hypervisor that has Microsoft’s interface.
BOOLEAN HviIsHypervisorMicrosoftCompatible (VOID);
The function returns TRUE or FALSE according to whether a hypervisor is present and implements Microsoft’s interface.
The HviIsHypervisorMicrosoftCompatible function is exported by name from the kernel in version 10.0 and higher.
The version 6.3 kernel has an inline routine that is coded very similarly to the version 10.0 HviIsHypervisorMicrosoftCompatible. Public symbol files for the version 6.3 kernel confirm that this earlier kernel has an inline routine that was already named HviIsHypervisorMicrosoftCompatible, took no input and returned a BOOLEAN. That the inline routine in the binary is the same as named in the symbol files which is in turn the origin of the exported function must be all but certain.
The HviIsHypervisorMicrosoftCompatible function is not documented.
If a hypervisor is present, the function executes cpuid leaf 0x40000001 to get the 4-byte signature of the hypervisor’s interface—see HviGetHypervisorInterface. The function returns TRUE if and only if this signature is 0x31237648, i.e., “Hv#1” when the bytes are read as text from least significant to most.