vrdpapi.h revision e2f8949b23aa000a9fd0bdabba0ffc3dd1144403
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync * VBox Remote Desktop Protocol:
ae7831c5adb71bdf2ef86aa7aa8dc19402b3345evboxsync * Public APIs.
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync * Copyright (C) 2006-2007 innotek GmbH
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync * available from http://www.virtualbox.org. This file is free software;
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync * you can redistribute it and/or modify it under the terms of the GNU
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync * General Public License as published by the Free Software Foundation,
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync * in version 2 as it comes in the "COPYING" file of the VirtualBox OSE
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync * distribution. VirtualBox OSE is distributed in the hope that it will
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync * be useful, but WITHOUT ANY WARRANTY of any kind.
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync# error "There are no VRDP APIs available in Ring-0 Host Context!"
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync# error "There are no VRDP APIs available Guest Context!"
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync/** @defgroup grp_vrdp VRDP
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync * VirtualBox Remote Desktop Protocol (VRDP) interface that lets to use
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync * the VRDP server.
20fc4a350a4a8e56ffaac6cf57dcd677a7ac36c5vboxsync/** Default port that VRDP binds to. */
b2ce45796dce5018f423e5b3909eb4b36f83f073vboxsync/* Forward declaration of the VRDP server instance handle. */
b2ce45796dce5018f423e5b3909eb4b36f83f073vboxsync#endif /* __cplusplus */
152b12e401b58b34fbdbf2a4510152b67884ee89vboxsync/* Callback based VRDP server interface declarations. */
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync#endif /* IN_VRDP */
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync/** The color mouse pointer information. */
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync /* The mask and the bitmap follow. */
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync/** Audio format information packed in a 32 bit value. */
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync/** Constructs 32 bit value for given frequency, number of channel and bits per sample. */
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync#define VRDP_AUDIO_FMT_MAKE(freq, c, bps, s) ((((s) & 0x1) << 28) + (((bps) & 0xFF) << 20) + (((c) & 0xF) << 16) + ((freq) & 0xFFFF))
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync/** Decode frequency. */
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync#define VRDP_AUDIO_FMT_SAMPLE_FREQ(a) ((a) & 0xFFFF)
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync/** Decode number of channels. */
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync#define VRDP_AUDIO_FMT_CHANNELS(a) (((a) >> 16) & 0xF)
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync/** Decode number signess. */
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync#define VRDP_AUDIO_FMT_SIGNED(a) (((a) >> 28) & 0x1)
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync/** Decode number of bits per sample. */
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync#define VRDP_AUDIO_FMT_BITS_PER_SAMPLE(a) (((a) >> 20) & 0xFF)
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync/** Decode number of bytes per sample. */
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync#define VRDP_AUDIO_FMT_BYTES_PER_SAMPLE(a) ((VRDP_AUDIO_FMT_BITS_PER_SAMPLE(a) + 7) / 8)
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync * Remote USB protocol.
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync/* The version of Remote USB Protocol. */
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync/** USB backend operations. */
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync/** USB service operations. */
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync/** An operation completion status is a byte. */
c33cfc3b3717e118f6e786433bd3725c33f2b8f8vboxsync/** USB device identifier is an 32 bit value. */
90ec75021ad8bca45729eedf9d3de4726381bb9dvboxsync/** Status codes. */
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync#define VRDP_USB_STATUS_ACCESS_DENIED ((VRDPUSBSTATUS)1)
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync#define VRDP_USB_STATUS_DEVICE_REMOVED ((VRDPUSBSTATUS)2)
152b12e401b58b34fbdbf2a4510152b67884ee89vboxsync * Data structures to use with VRDPUSBRequest.
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync * The *RET* structures always represent the layout of VRDP data.
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync * The *PARM* structures normally the same as VRDP layout.
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync * However the VRDP_USB_REQ_QUEUE_URB_PARM has a pointer to
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync * URB data in place where actual data will be in VRDP layout.
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync * Since replies (*RET*) are asynchronous, the 'success'
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync * replies are not required for operations which return
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync * only the status code (VRDPUSBREQRETHDR only):
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync * VRDP_USB_REQ_OPEN
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync * VRDP_USB_REQ_RESET
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync * VRDP_USB_REQ_SET_CONFIG
ae7831c5adb71bdf2ef86aa7aa8dc19402b3345evboxsync * VRDP_USB_REQ_CLAIM_INTERFACE
b2ce45796dce5018f423e5b3909eb4b36f83f073vboxsync * VRDP_USB_REQ_RELEASE_INTERFACE
6d73c66200a04223ae56a22ff221ec32193717a5vboxsync * VRDP_USB_REQ_INTERFACE_SETTING
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync * VRDP_USB_REQ_CLEAR_HALTED_EP
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync/* VRDP layout has no aligments. */
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync/* Common header for all VRDP USB packets. After the reply hdr follows *PARM* or *RET* data. */
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync /* Total length of the reply NOT including the 'length' field. */
75fb03f8c1ac60d0449d333b78ec1ef08fcc9868vboxsync /* The operation code for which the reply was sent by the client. */
typedef struct _VRDPUSBREQRETHDR
typedef struct _VRDP_USB_REQ_OPEN_PARM
typedef struct _VRDP_USB_REQ_OPEN_RET
typedef struct _VRDP_USB_REQ_CLOSE_PARM
typedef struct _VRDP_USB_REQ_RESET_PARM
typedef struct _VRDP_USB_REQ_RESET_RET
typedef struct _VRDP_USB_REQ_SET_CONFIG_PARM
typedef struct _VRDP_USB_REQ_SET_CONFIG_RET
typedef struct _VRDP_USB_REQ_CLAIM_INTERFACE_PARM
typedef struct _VRDP_USB_REQ_CLAIM_INTERFACE_RET
typedef struct _VRDP_USB_REQ_RELEASE_INTERFACE_PARM
typedef struct _VRDP_USB_REQ_RELEASE_INTERFACE_RET
typedef struct _VRDP_USB_REQ_INTERFACE_SETTING_PARM
typedef struct _VRDP_USB_REQ_INTERFACE_SETTING_RET
#define VRDP_USB_TRANSFER_TYPE_CTRL (0)
#define VRDP_USB_DIRECTION_SETUP (0)
typedef struct _VRDP_USB_REQ_QUEUE_URB_PARM
uint32_t handle; /* Distinguishes that particular URB. Later used in CancelURB and returned by ReapURB */
typedef struct _VRDP_USB_REQ_REAP_URB_PARM
#define VRDP_USB_XFER_OK (0)
typedef struct _VRDPUSBREQREAPURBBODY
typedef struct _VRDP_USB_REQ_REAP_URB_RET
typedef struct _VRDP_USB_REQ_CLEAR_HALTED_EP_PARM
typedef struct _VRDP_USB_REQ_CLEAR_HALTED_EP_RET
typedef struct _VRDP_USB_REQ_CANCEL_URB_PARM
typedef struct _VRDP_USB_REQ_DEVICE_LIST_PARM
typedef struct _VRDPUSBDEVICEDESC
typedef struct _VRDP_USB_REQ_DEVICE_LIST_RET
typedef struct _VRDPUSBREQNEGOTIATEPARM
typedef struct _VRDPUSBREQNEGOTIATERET
#pragma pack()
#define VRDP_CLIPBOARD_FUNCTION_FORMAT_ANNOUNCE (0)
#define VRDP_QI_ACTIVE (0)
typedef struct _VRDPINTERFACEHDR
typedef struct _VRDPENTRYPOINTS_1
bool fEnable));
bool fReconnect));
* @param pvUpdate Pointer to VBoxGuest.h::VRDPORDERHDR structure with extra data.
unsigned uScreenId,
void *pvUpdate,
const void *pvSamples,
void *pvParm,
void *pvData,
void *pvBuffer,
typedef struct _VRDPFRAMEBUFFERINFO
int xOrigin;
int yOrigin;
unsigned cWidth;
unsigned cHeight;
unsigned cBitsPerPixel;
unsigned cbLine;
#define VRDP_INPUT_SCANCODE 0
typedef struct _VRDPINPUTSCANCODE
unsigned uScancode;
typedef struct _VRDPINPUTPOINT
unsigned uButtons;
typedef struct _VRDPINPUTSYNCH
unsigned uLockStatus;
#pragma pack()
typedef struct _VRDPCALLBACKS_1
void *pvBuffer,
const char *pszUser,
const char *pszPassword,
const char *pszDomain));
void **ppvIntercept));
* @param ppvIntercept The value returned by VRDPCallbackIntercept for the VRDP_CLIENT_INTERCEPT_USB.
void *pvIntercept,
const void *pvRet,
* @param ppvIntercept The value returned by VRDPCallbackIntercept for the VRDP_CLIENT_INTERCEPT_CLIPBOARD.
void *pvIntercept,
const void *pvData,
unsigned uScreenId,
unsigned uScreenId));
unsigned uScreenId));
int type,
const void *pvInput,
unsigned cbInput));
unsigned cWidth,
unsigned cHeight,
unsigned cBitsPerPixel,
unsigned uScreenId));
void *pvCallback,
void *pvCallback,