/* Port for generic request interface (relative offset). */ #define VMMDEV_PORT_OFF_REQUEST 0
/** Layout of VMMDEV RAM region that contains information for guest. */ struct vmmdev_memory { /** The size of this structure. */
u32 size; /** The structure version. (VMMDEV_MEMORY_VERSION) */
u32 version;
union { struct { /** Flag telling that VMMDev has events pending. */
u8 have_events; /** Explicit padding, MBZ. */
u8 padding[3];
} V1_04;
struct { /** Pending events flags, set by host. */
u32 host_events; /** Mask of events the guest wants, set by guest. */
u32 guest_event_mask;
} V1_03;
} V;
/* struct vbva_memory, not used */
};
VMMDEV_ASSERT_SIZE(vmmdev_memory, 8 + 8);
/** Version of vmmdev_memory structure (vmmdev_memory::version). */ #define VMMDEV_MEMORY_VERSION (1)
/* Host mouse capabilities has been changed. */ #define VMMDEV_EVENT_MOUSE_CAPABILITIES_CHANGED BIT(0) /* HGCM event. */ #define VMMDEV_EVENT_HGCM BIT(1) /* A display change request has been issued. */ #define VMMDEV_EVENT_DISPLAY_CHANGE_REQUEST BIT(2) /* Credentials are available for judgement. */ #define VMMDEV_EVENT_JUDGE_CREDENTIALS BIT(3) /* The guest has been restored. */ #define VMMDEV_EVENT_RESTORED BIT(4) /* Seamless mode state changed. */ #define VMMDEV_EVENT_SEAMLESS_MODE_CHANGE_REQUEST BIT(5) /* Memory balloon size changed. */ #define VMMDEV_EVENT_BALLOON_CHANGE_REQUEST BIT(6) /* Statistics interval changed. */ #define VMMDEV_EVENT_STATISTICS_INTERVAL_CHANGE_REQUEST BIT(7) /* VRDP status changed. */ #define VMMDEV_EVENT_VRDP BIT(8) /* New mouse position data available. */ #define VMMDEV_EVENT_MOUSE_POSITION_CHANGED BIT(9) /* CPU hotplug event occurred. */ #define VMMDEV_EVENT_CPU_HOTPLUG BIT(10) /* The mask of valid events, for sanity checking. */ #define VMMDEV_EVENT_VALID_EVENT_MASK 0x000007ffU
/* * Additions are allowed to work only if additions_major == vmmdev_current && * additions_minor <= vmmdev_current. Additions version is reported to host * (VMMDev) by VMMDEVREQ_REPORT_GUEST_INFO.
*/ #define VMMDEV_VERSION 0x00010004 #define VMMDEV_VERSION_MAJOR (VMMDEV_VERSION >> 16) #define VMMDEV_VERSION_MINOR (VMMDEV_VERSION & 0xffff)
/* Maximum request packet size. */ #define VMMDEV_MAX_VMMDEVREQ_SIZE 1048576
/* Version of vmmdev_request_header structure. */ #define VMMDEV_REQUEST_HEADER_VERSION 0x10001
/** struct vmmdev_request_header - Generic VMMDev request header. */ struct vmmdev_request_header { /** IN: Size of the structure in bytes (including body). */
u32 size; /** IN: Version of the structure. */
u32 version; /** IN: Type of the request. */ enum vmmdev_request_type request_type; /** OUT: Return code. */
s32 rc; /** Reserved field no.1. MBZ. */
u32 reserved1; /** IN: Requestor information (VMMDEV_REQUESTOR_*) */
u32 requestor;
};
VMMDEV_ASSERT_SIZE(vmmdev_request_header, 24);
/** * struct vmmdev_mouse_status - Mouse status request structure. * * Used by VMMDEVREQ_GET_MOUSE_STATUS and VMMDEVREQ_SET_MOUSE_STATUS.
*/ struct vmmdev_mouse_status { /** header */ struct vmmdev_request_header header; /** Mouse feature mask. See VMMDEV_MOUSE_*. */
u32 mouse_features; /** Mouse x position. */
s32 pointer_pos_x; /** Mouse y position. */
s32 pointer_pos_y;
};
VMMDEV_ASSERT_SIZE(vmmdev_mouse_status, 24 + 12);
/* The guest can (== wants to) handle absolute coordinates. */ #define VMMDEV_MOUSE_GUEST_CAN_ABSOLUTE BIT(0) /* * The host can (== wants to) send absolute coordinates. * (Input not captured.)
*/ #define VMMDEV_MOUSE_HOST_WANTS_ABSOLUTE BIT(1) /* * The guest can *NOT* switch to software cursor and therefore depends on the * host cursor. * * When guest additions are installed and the host has promised to display the * cursor itself, the guest installs a hardware mouse driver. Don't ask the * guest to switch to a software cursor then.
*/ #define VMMDEV_MOUSE_GUEST_NEEDS_HOST_CURSOR BIT(2) /* The host does NOT provide support for drawing the cursor itself. */ #define VMMDEV_MOUSE_HOST_CANNOT_HWPOINTER BIT(3) /* The guest can read VMMDev events to find out about pointer movement */ #define VMMDEV_MOUSE_NEW_PROTOCOL BIT(4) /* * If the guest changes the status of the VMMDEV_MOUSE_GUEST_NEEDS_HOST_CURSOR * bit, the host will honour this.
*/ #define VMMDEV_MOUSE_HOST_RECHECKS_NEEDS_HOST_CURSOR BIT(5) /* * The host supplies an absolute pointing device. The Guest Additions may * wish to use this to decide whether to install their own driver.
*/ #define VMMDEV_MOUSE_HOST_HAS_ABS_DEV BIT(6)
/* The minimum value our pointing device can return. */ #define VMMDEV_MOUSE_RANGE_MIN 0 /* The maximum value our pointing device can return. */ #define VMMDEV_MOUSE_RANGE_MAX 0xFFFF
/** * struct vmmdev_host_version - VirtualBox host version request structure. * * VBG uses this to detect the precense of new features in the interface.
*/ struct vmmdev_host_version { /** Header. */ struct vmmdev_request_header header; /** Major version. */
u16 major; /** Minor version. */
u16 minor; /** Build number. */
u32 build; /** SVN revision. */
u32 revision; /** Feature mask. */
u32 features;
};
VMMDEV_ASSERT_SIZE(vmmdev_host_version, 24 + 16);
/* Physical page lists are supported by HGCM. */ #define VMMDEV_HVF_HGCM_PHYS_PAGE_LIST BIT(0)
/** * struct vmmdev_mask - Structure to set / clear bits in a mask used for * VMMDEVREQ_SET_GUEST_CAPABILITIES and VMMDEVREQ_CTL_GUEST_FILTER_MASK.
*/ struct vmmdev_mask { /** Header. */ struct vmmdev_request_header header; /** Mask of bits to be set. */
u32 or_mask; /** Mask of bits to be cleared. */
u32 not_mask;
};
VMMDEV_ASSERT_SIZE(vmmdev_mask, 24 + 8);
/* The guest supports seamless display rendering. */ #define VMMDEV_GUEST_SUPPORTS_SEAMLESS BIT(0) /* The guest supports mapping guest to host windows. */ #define VMMDEV_GUEST_SUPPORTS_GUEST_HOST_WINDOW_MAPPING BIT(1) /* * The guest graphical additions are active. * Used for fast activation and deactivation of certain graphical operations * (e.g. resizing & seamless). The legacy VMMDEVREQ_REPORT_GUEST_CAPABILITIES * request sets this automatically, but VMMDEVREQ_SET_GUEST_CAPABILITIES does * not.
*/ #define VMMDEV_GUEST_SUPPORTS_GRAPHICS BIT(2) /* The mask of valid capabilities, for sanity checking. */ #define VMMDEV_GUEST_CAPABILITIES_MASK 0x00000007U
/** struct vmmdev_hypervisorinfo - Hypervisor info structure. */ struct vmmdev_hypervisorinfo { /** Header. */ struct vmmdev_request_header header; /** * Guest virtual address of proposed hypervisor start. * Not used by VMMDEVREQ_GET_HYPERVISOR_INFO.
*/
u32 hypervisor_start; /** Hypervisor size in bytes. */
u32 hypervisor_size;
};
VMMDEV_ASSERT_SIZE(vmmdev_hypervisorinfo, 24 + 8);
/** struct vmmdev_guestinfo - Guest information report. */ struct vmmdev_guest_info { /** Header. */ struct vmmdev_request_header header; /** * The VMMDev interface version expected by additions. * *Deprecated*, do not use anymore! Will be removed.
*/
u32 interface_version; /** Guest OS type. */
u32 os_type;
};
VMMDEV_ASSERT_SIZE(vmmdev_guest_info, 24 + 8);
/** struct vmmdev_guestinfo2 - Guest information report, version 2. */ struct vmmdev_guest_info2 { /** Header. */ struct vmmdev_request_header header; /** Major version. */
u16 additions_major; /** Minor version. */
u16 additions_minor; /** Build number. */
u32 additions_build; /** SVN revision. */
u32 additions_revision; /** Feature mask. */
u32 additions_features; /** * The intentional meaning of this field was: * Some additional information, for example 'Beta 1' or something like * that. * * The way it was implemented was implemented: VBG_VERSION_STRING. * * This means the first three members are duplicated in this field (if * the guest build config is sane). So, the user must check this and * chop it off before usage. There is, because of the Main code's blind * trust in the field's content, no way back.
*/ char name[128];
};
VMMDEV_ASSERT_SIZE(vmmdev_guest_info2, 24 + 144);
/** struct vmmdev_memballoon_info - Memory-balloon info structure. */ struct vmmdev_memballoon_info { /** Header. */ struct vmmdev_request_header header; /** Balloon size in megabytes. */
u32 balloon_chunks; /** Guest ram size in megabytes. */
u32 phys_mem_chunks; /** * Setting this to VMMDEV_EVENT_BALLOON_CHANGE_REQUEST indicates that * the request is a response to that event. * (Don't confuse this with VMMDEVREQ_ACKNOWLEDGE_EVENTS.)
*/
u32 event_ack;
};
VMMDEV_ASSERT_SIZE(vmmdev_memballoon_info, 24 + 12);
/** struct vmmdev_memballoon_change - Change the size of the balloon. */ struct vmmdev_memballoon_change { /** Header. */ struct vmmdev_request_header header; /** The number of pages in the array. */
u32 pages; /** true = inflate, false = deflate. */
u32 inflate; /** Physical address (u64) of each page. */
u64 phys_page[VMMDEV_MEMORY_BALLOON_CHUNK_PAGES];
};
/** IN: Client identifier. */
u32 client_id; /** IN: Service function number. */
u32 function; /** IN: Number of parameters. */
u32 parm_count; /** Parameters follow in form: HGCMFunctionParameter32|64 parms[X]; */
};
VMMDEV_ASSERT_SIZE(vmmdev_hgcm_call, 32 + 12);
/** * struct vmmdev_hgcm_cancel2 - HGCM cancel request structure, version 2. * * After the request header.rc will be: * * VINF_SUCCESS when cancelled. * VERR_NOT_FOUND if the specified request cannot be found. * VERR_INVALID_PARAMETER if the address is invalid valid.
*/ struct vmmdev_hgcm_cancel2 { /** Header. */ struct vmmdev_request_header header; /** The physical address of the request to cancel. */
u32 phys_req_to_cancel;
};
VMMDEV_ASSERT_SIZE(vmmdev_hgcm_cancel2, 24 + 4);
#endif
Messung V0.5
¤ Diese beiden folgenden Angebotsgruppen bietet das Unternehmen0.4Angebot
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.