VBoxGuest16.h revision ee83d548adae5c628ab0799ceae14ad7895a0590
7dcb2f62e25d05f2afeb4e79f10102350d7c2c7bBrendan Mmiller/** @file
7dcb2f62e25d05f2afeb4e79f10102350d7c2c7bBrendan Mmiller * VBoxGuest - VirtualBox Guest Additions Interface, 16-bit (OS/2) header.
7dcb2f62e25d05f2afeb4e79f10102350d7c2c7bBrendan Mmiller */
7dcb2f62e25d05f2afeb4e79f10102350d7c2c7bBrendan Mmiller
7dcb2f62e25d05f2afeb4e79f10102350d7c2c7bBrendan Mmiller/*
7dcb2f62e25d05f2afeb4e79f10102350d7c2c7bBrendan Mmiller * Copyright (C) 2006-2007 innotek GmbH
7dcb2f62e25d05f2afeb4e79f10102350d7c2c7bBrendan Mmiller *
7dcb2f62e25d05f2afeb4e79f10102350d7c2c7bBrendan Mmiller * This file is part of VirtualBox Open Source Edition (OSE), as
7dcb2f62e25d05f2afeb4e79f10102350d7c2c7bBrendan Mmiller * available from http://www.virtualbox.org. This file is free software;
7dcb2f62e25d05f2afeb4e79f10102350d7c2c7bBrendan Mmiller * you can redistribute it and/or modify it under the terms of the GNU
7dcb2f62e25d05f2afeb4e79f10102350d7c2c7bBrendan Mmiller * General Public License as published by the Free Software Foundation,
7dcb2f62e25d05f2afeb4e79f10102350d7c2c7bBrendan Mmiller * in version 2 as it comes in the "COPYING" file of the VirtualBox OSE
7dcb2f62e25d05f2afeb4e79f10102350d7c2c7bBrendan Mmiller * distribution. VirtualBox OSE is distributed in the hope that it will
7dcb2f62e25d05f2afeb4e79f10102350d7c2c7bBrendan Mmiller * be useful, but WITHOUT ANY WARRANTY of any kind.
7dcb2f62e25d05f2afeb4e79f10102350d7c2c7bBrendan Mmiller */
7dcb2f62e25d05f2afeb4e79f10102350d7c2c7bBrendan Mmiller
7dcb2f62e25d05f2afeb4e79f10102350d7c2c7bBrendan Mmiller#ifndef ___VBox_VBoxGuest16_h
7dcb2f62e25d05f2afeb4e79f10102350d7c2c7bBrendan Mmiller#define ___VBox_VBoxGuest16_h
7dcb2f62e25d05f2afeb4e79f10102350d7c2c7bBrendan Mmiller
7dcb2f62e25d05f2afeb4e79f10102350d7c2c7bBrendan Mmiller#define BIT(bit) (1UL << (bit))
7dcb2f62e25d05f2afeb4e79f10102350d7c2c7bBrendan Mmiller
7dcb2f62e25d05f2afeb4e79f10102350d7c2c7bBrendan Mmiller
7dcb2f62e25d05f2afeb4e79f10102350d7c2c7bBrendan Mmiller#define VMMDEV_VERSION 0x00010004UL
7dcb2f62e25d05f2afeb4e79f10102350d7c2c7bBrendan Mmiller
7dcb2f62e25d05f2afeb4e79f10102350d7c2c7bBrendan Mmiller#define VBOXGUEST_DEVICE_NAME "vboxgst$"
7dcb2f62e25d05f2afeb4e79f10102350d7c2c7bBrendan Mmiller
7dcb2f62e25d05f2afeb4e79f10102350d7c2c7bBrendan Mmiller/* aka VBOXGUESTOS2IDCCONNECT */
7dcb2f62e25d05f2afeb4e79f10102350d7c2c7bBrendan Mmillertypedef struct VBGOS2IDC
7dcb2f62e25d05f2afeb4e79f10102350d7c2c7bBrendan Mmiller{
7dcb2f62e25d05f2afeb4e79f10102350d7c2c7bBrendan Mmiller unsigned long u32Version;
7dcb2f62e25d05f2afeb4e79f10102350d7c2c7bBrendan Mmiller unsigned long u32Session;
7dcb2f62e25d05f2afeb4e79f10102350d7c2c7bBrendan Mmiller unsigned long pfnServiceEP;
7dcb2f62e25d05f2afeb4e79f10102350d7c2c7bBrendan Mmiller short (__cdecl __far *fpfnServiceEP)(unsigned long u32Session, unsigned short iFunction,
eb2b0665954495b2b2ff7b64375040233c22398fChad Kienle void __far *fpvData, unsigned short cbData, unsigned short __far *pcbDataReturned);
7dcb2f62e25d05f2afeb4e79f10102350d7c2c7bBrendan Mmiller unsigned long fpfnServiceAsmEP;
18f2985c5be44e17aff0b118ee2c6f18967fa150Brendan Mmiller} VBGOS2IDC;
typedef VBGOS2IDC *PVBGOS2IDC;
#define VBOXGUEST_IOCTL_WAITEVENT 2
#define VBOXGUEST_IOCTL_VMMREQUEST 3
#define VBOXGUEST_IOCTL_OS2_IDC_DISCONNECT 48
#define VMMDEV_EVENT_MOUSE_CAPABILITIES_CHANGED BIT(0)
#define VMMDEV_EVENT_HGCM BIT(1)
#define VMMDEV_EVENT_DISPLAY_CHANGE_REQUEST BIT(2)
#define VMMDEV_EVENT_JUDGE_CREDENTIALS BIT(3)
#define VMMDEV_EVENT_RESTORED BIT(4)
#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 VBOXGUEST_MOUSE_GUEST_CAN_ABSOLUTE BIT(0)
#define VBOXGUEST_MOUSE_HOST_CAN_ABSOLUTE BIT(1)
#define VBOXGUEST_MOUSE_GUEST_NEEDS_HOST_CURSOR BIT(2)
#define VBOXGUEST_MOUSE_HOST_CANNOT_HWPOINTER 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;
#endif