Hypercall Overview

Each hypercall that the hypervisor implements defines a set of input and, possibly, output parameters. For most hypercalls, these parameters are specified as memory-based data structures. All elements of the input and output data structures are padded up to 8 bytes to natural boundaries (that is, 2 byte elements must be on 2 byte boundaries and so on).

For frequently-called hypercalls, hypervisor provides a fast hypercall calling convention. The input parameters for hypercalls that use this calling convention are passed in registers, and there are no output parameters.

A third hypercall calling convention can optionally be used for a subset of hypercalls where the input parameter block is up to 112 bytes. When hypercalls use this calling convention, the input parameters are passed in registers, which includes the volatile XMM registers.

Input and output data structures must both be placed in memory on an 8-byte boundary and padded to a multiple of 8 bytes in size. The hypervisor ignores the values in the padding regions.

For output, the hypervisor can (but is not guaranteed to) overwrite padding regions. If it overwrites the padding regions, the hypervisor will write zeros.

 

 

Send comments about this topic to Microsoft

Build date: 11/16/2013

Show:
© 2014 Microsoft. All rights reserved.