HV_X64_PLATFORM_CAPABILITIES

The HV_X64_PLATFORM_CAPABILITIES collects the flags
that a Microsoft-compatible hypervisor is to produce in the
eax, ebx,
ecx and edx registers
as output for some unknown leaf of the cpuid instruction.
Or so it seems reasonable to infer. The HV_CPUID_RESULT union that Microsoft defined
in the Windows Driver Kit (WDK) for Windows 7 was at least intended originally for
all the cpuid leaves that matter to the hypervisor.
This union’s version for Windows 10 has one member of type HV_X64_PLATFORM_CAPABILITIES
but the Windows kernel, anyway, does not execute any cpuid
leaf that produces these flags.

Documentation Status

The HV_X64_PLATFORM_CAPABILITIES is not documented.
The hypervisor’s cpuid implementation is documented
in the
Hypervisor Top-Level Functional Specification, which Microsoft provides under
the Microsoft Open Specification Promise. What’s offered there today (12th November
2016) as the specification’s most recent version is a PDF that is three years old
and extends only to leaf 0x40000006.

Layout

The HV_X64_PLATFORM_CAPABILITIES is 0x10 bytes. Formally,
the HV_X64_PLATFORM_CAPABILITIES is a 16-byte union to
ease the accessing of all flags together:

What counts are the bits. There are already many. The masks and definitions below
are from type information in symbol files for URLMON.DLL in Windows 10. Of all the
symbol files that Microsoft publishes for Windows 10, only those for URLMON.DLL
have type information for HV_X64_PLATFORM_CAPABILITIES
or even of the HV_CPUID_RESULT union that the former
is used in.