summaryrefslogtreecommitdiff
path: root/include/VBox/VBoxGuest16.h
blob: 0a431278069939d1f38d7692cf01fdf569ca41d7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
/** @file
 * VBoxGuest - VirtualBox Guest Additions Driver Interface, 16-bit (OS/2) header.
 */

/*
 * Copyright (C) 2006-2010 Oracle Corporation
 *
 * This file is part of VirtualBox Open Source Edition (OSE), as
 * available from http://www.virtualbox.org. This file is free software;
 * you can redistribute it and/or modify it under the terms of the GNU
 * General Public License (GPL) as published by the Free Software
 * Foundation, in version 2 as it comes in the "COPYING" file of the
 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
 *
 * The contents of this file may alternatively be used under the terms
 * of the Common Development and Distribution License Version 1.0
 * (CDDL) only, as it comes in the "COPYING.CDDL" file of the
 * VirtualBox OSE distribution, in which case the provisions of the
 * CDDL are applicable instead of those of the GPL.
 *
 * You may elect to license modified versions of this file under the
 * terms and conditions of either the GPL or the CDDL or both.
 */

#ifndef ___VBox_VBoxGuest16_h
#define ___VBox_VBoxGuest16_h

#define RT_BIT(bit)                             (1UL << (bit))

#define VBOXGUEST_DEVICE_NAME                   "vboxgst$"

/* aka VBOXGUESTOS2IDCCONNECT */
typedef struct VBGOS2IDC
{
    unsigned long u32Version;
    unsigned long u32Session;
    unsigned long pfnServiceEP;
    short (__cdecl __far *fpfnServiceEP)(unsigned long u32Session, unsigned short iFunction,
                                         void __far *fpvData, unsigned short cbData, unsigned short __far *pcbDataReturned);
    unsigned long fpfnServiceAsmEP;
} VBGOS2IDC;
typedef VBGOS2IDC *PVBGOS2IDC;

#define VBOXGUEST_IOCTL_WAITEVENT               2
#define VBOXGUEST_IOCTL_VMMREQUEST              3
#define VBOXGUEST_IOCTL_OS2_IDC_DISCONNECT      48

#define VBOXGUEST_WAITEVENT_OK                  0
#define VBOXGUEST_WAITEVENT_TIMEOUT             1
#define VBOXGUEST_WAITEVENT_INTERRUPTED         2
#define VBOXGUEST_WAITEVENT_ERROR               3

typedef struct _VBoxGuestWaitEventInfo
{
    unsigned long u32TimeoutIn;
    unsigned long u32EventMaskIn;
    unsigned long u32Result;
    unsigned long u32EventFlagsOut;
} VBoxGuestWaitEventInfo;


#define VMMDEV_REQUEST_HEADER_VERSION           (0x10001UL)
typedef struct
{
    unsigned long size;
    unsigned long version;
    unsigned long requestType;
    signed   long rc;
    unsigned long reserved1;
    unsigned long reserved2;
} VMMDevRequestHeader;

#define VMMDevReq_GetMouseStatus                1
#define VMMDevReq_SetMouseStatus                2
#define VMMDevReq_CtlGuestFilterMask            42

#define VMMDEV_MOUSE_GUEST_CAN_ABSOLUTE      RT_BIT(0)
#define VMMDEV_MOUSE_HOST_WANTS_ABSOLUTE     RT_BIT(1)
#define VMMDEV_MOUSE_GUEST_NEEDS_HOST_CURSOR RT_BIT(2)
#define VMMDEV_MOUSE_HOST_CANNOT_HWPOINTER   RT_BIT(3)

typedef struct
{
    VMMDevRequestHeader header;
    unsigned long mouseFeatures;
    unsigned long pointerXPos;
    unsigned long pointerYPos;
} VMMDevReqMouseStatus;

typedef struct
{
    VMMDevRequestHeader header;
    unsigned long u32OrMask;
    unsigned long u32NotMask;
} VMMDevCtlGuestFilterMask;


/* From VMMDev.h: */
#define VMMDEV_VERSION                          0x00010004UL

#define VMMDEV_EVENT_MOUSE_CAPABILITIES_CHANGED RT_BIT(0)
#define VMMDEV_EVENT_HGCM                       RT_BIT(1)
#define VMMDEV_EVENT_DISPLAY_CHANGE_REQUEST     RT_BIT(2)
#define VMMDEV_EVENT_JUDGE_CREDENTIALS          RT_BIT(3)
#define VMMDEV_EVENT_RESTORED                   RT_BIT(4)

#endif