pdmifs.h revision aa3cf840271b8d89853fa1ac9568ac78af05961a
1d7eb4842eb34752cbc8655fc26097b97806314dvboxsync * PDM - Pluggable Device Manager, Interfaces.
1d7eb4842eb34752cbc8655fc26097b97806314dvboxsync * Copyright (C) 2006-2008 Sun Microsystems, Inc.
1d7eb4842eb34752cbc8655fc26097b97806314dvboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
1d7eb4842eb34752cbc8655fc26097b97806314dvboxsync * available from http://www.virtualbox.org. This file is free software;
1d7eb4842eb34752cbc8655fc26097b97806314dvboxsync * you can redistribute it and/or modify it under the terms of the GNU
1d7eb4842eb34752cbc8655fc26097b97806314dvboxsync * General Public License (GPL) as published by the Free Software
1d7eb4842eb34752cbc8655fc26097b97806314dvboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
1d7eb4842eb34752cbc8655fc26097b97806314dvboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
1d7eb4842eb34752cbc8655fc26097b97806314dvboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
1d7eb4842eb34752cbc8655fc26097b97806314dvboxsync * The contents of this file may alternatively be used under the terms
1d7eb4842eb34752cbc8655fc26097b97806314dvboxsync * of the Common Development and Distribution License Version 1.0
1d7eb4842eb34752cbc8655fc26097b97806314dvboxsync * (CDDL) only, as it comes in the "COPYING.CDDL" file of the
1d7eb4842eb34752cbc8655fc26097b97806314dvboxsync * VirtualBox OSE distribution, in which case the provisions of the
1d7eb4842eb34752cbc8655fc26097b97806314dvboxsync * CDDL are applicable instead of those of the GPL.
1d7eb4842eb34752cbc8655fc26097b97806314dvboxsync * You may elect to license modified versions of this file under the
1d7eb4842eb34752cbc8655fc26097b97806314dvboxsync * terms and conditions of either the GPL or the CDDL or both.
37c53e9b2c955f92dff6f11aff63809004945f17vboxsync * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
1d7eb4842eb34752cbc8655fc26097b97806314dvboxsync * Clara, CA 95054 USA or visit http://www.sun.com if you need
1d7eb4842eb34752cbc8655fc26097b97806314dvboxsync * additional information or have any questions.
1d7eb4842eb34752cbc8655fc26097b97806314dvboxsync/** @defgroup grp_pdm_interfaces The PDM Interface Definitions
1d7eb4842eb34752cbc8655fc26097b97806314dvboxsync * @ingroup grp_pdm
1d7eb4842eb34752cbc8655fc26097b97806314dvboxsync * Driver interface identficators.
1d7eb4842eb34752cbc8655fc26097b97806314dvboxsync * @remark All interfaces have to be declared here. There is no such thing as
1d7eb4842eb34752cbc8655fc26097b97806314dvboxsync * private interface identifiers since they must be unique.
1d7eb4842eb34752cbc8655fc26097b97806314dvboxsync * That said, interface structures and other stuff can be put elsewhere,
1d7eb4842eb34752cbc8655fc26097b97806314dvboxsync * actually, it is best if this file is not flooded with structures that
1d7eb4842eb34752cbc8655fc26097b97806314dvboxsync * could be put closer to home.
1d7eb4842eb34752cbc8655fc26097b97806314dvboxsync /** PDMIBASE - The interface everyone supports. */
1d7eb4842eb34752cbc8655fc26097b97806314dvboxsync /** PDMIMOUSEPORT - The mouse port interface. (Down) Coupled with PDMINTERFACE_MOUSE_CONNECTOR. */
1d7eb4842eb34752cbc8655fc26097b97806314dvboxsync /** PDMIMOUSECONNECTOR - The mouse connector interface. (Up) Coupled with PDMINTERFACE_MOUSE_PORT. */
1d7eb4842eb34752cbc8655fc26097b97806314dvboxsync /** PDMIKEYBOARDPORT - The keyboard port interface. (Down) Coupled with PDMINTERFACE_KEYBOARD_CONNECTOR. */
1d7eb4842eb34752cbc8655fc26097b97806314dvboxsync /** PDMIKEYBOARDCONNECTOR - The keyboard connector interface. (Up) Coupled with PDMINTERFACE_KEYBOARD_PORT. */
37c53e9b2c955f92dff6f11aff63809004945f17vboxsync /** PDMIDISPLAYPORT - The display port interface. (Down) Coupled with PDMINTERFACE_DISPLAY_CONNECTOR. */
37c53e9b2c955f92dff6f11aff63809004945f17vboxsync /** PDMIDISPLAYCONNECTOR - The display connector interface. (Up) Coupled with PDMINTERFACE_DISPLAY_PORT. */
1d7eb4842eb34752cbc8655fc26097b97806314dvboxsync /** PDMICHARPORT - The char notify interface. (Down) Coupled with PDMINTERFACE_CHAR. */
1d7eb4842eb34752cbc8655fc26097b97806314dvboxsync /** PDMICHAR - The char driver interface. (Up) Coupled with PDMINTERFACE_CHAR_PORT. */
1d7eb4842eb34752cbc8655fc26097b97806314dvboxsync /** PDMISTREAM - The stream driver interface (Up) No coupling.
1d7eb4842eb34752cbc8655fc26097b97806314dvboxsync * Used by a char driver to implement PDMINTERFACE_CHAR. */
37c53e9b2c955f92dff6f11aff63809004945f17vboxsync /** PDMIBLOCKPORT - The block notify interface (Down) Coupled with PDMINTERFACE_BLOCK. */
37c53e9b2c955f92dff6f11aff63809004945f17vboxsync /** PDMIBLOCK - The block driver interface (Up) Coupled with PDMINTERFACE_BLOCK_PORT. */
37c53e9b2c955f92dff6f11aff63809004945f17vboxsync /** PDMIBLOCKBIOS - The block bios interface. (External) */
37c53e9b2c955f92dff6f11aff63809004945f17vboxsync /** PDMIMOUNTNOTIFY - The mountable notification interface. (Down) Coupled with PDMINTERFACE_MOUNT. */
37c53e9b2c955f92dff6f11aff63809004945f17vboxsync /** PDMIMOUNT - The mountable interface. (Up) Coupled with PDMINTERFACE_MOUNT_NOTIFY. */
1df46139c7299e5fbb38e49955bce0c8ad972330vboxsync /** PDMIMEDIA - The media interface. (Up) No coupling.
37c53e9b2c955f92dff6f11aff63809004945f17vboxsync * Used by a block unit driver to implement PDMINTERFACE_BLOCK and PDMINTERFACE_BLOCK_BIOS. */
2d8a09147af7f74a5deb52f52ded5b845ddcba2dvboxsync /** PDMIISCSITRANSPORT - The iSCSI transport interface (Up) No coupling.
2d8a09147af7f74a5deb52f52ded5b845ddcba2dvboxsync * used by the iSCSI media driver. */
2d8a09147af7f74a5deb52f52ded5b845ddcba2dvboxsync /** PDMIISCSITRANSPORTASYNC - The asynchronous iSCSI interface (Up) Couple with PDMINTERFACE_ISCSITRANSPORT.
1df46139c7299e5fbb38e49955bce0c8ad972330vboxsync * extension used by the iSCSI media driver. */
2d8a09147af7f74a5deb52f52ded5b845ddcba2dvboxsync /** PDMIISCSITRANSPORTASYNCPORT - The asynchronous iSCSI interface (Down) Couple with PDMINTERFACE_ISCSITRANSPORTASYNC.
2d8a09147af7f74a5deb52f52ded5b845ddcba2dvboxsync * notify port used by the iSCSI media driver. */
2d8a09147af7f74a5deb52f52ded5b845ddcba2dvboxsync /** PDMIMEDIAASYNC - Async version of the media interface (Down) Coupled with PDMINTERFACE_MEDIA_ASYNC_PORT. */
1df46139c7299e5fbb38e49955bce0c8ad972330vboxsync /** PDMIMEDIAASYNCPORT - Async version of the media interface (Up) Coupled with PDMINTERFACE_MEDIA_ASYNC. */
ca5d48382e06537b69b713b1b772dc299e681d24vboxsync /** PDMIBLOCKASYNC - Async version of the block interface (Down) Coupled with PDMINTERFACE_BLOCK_ASYNC_PORT. */
ca5d48382e06537b69b713b1b772dc299e681d24vboxsync /** PDMIBLOCKASYNCPORT - Async version of the block interface (Up) Coupled with PDMINTERFACE_BLOCK_ASYNC. */
ca5d48382e06537b69b713b1b772dc299e681d24vboxsync /** PDMITRANSPORTASYNC - Transport data async to their target (Down) Coupled with PDMINTERFACE_TRANSPORT_ASYNC_PORT. */
ca5d48382e06537b69b713b1b772dc299e681d24vboxsync /** PDMITRANSPORTASYNCPORT - Transport data async to their target (Up) Coupled with PDMINTERFACE_TRANSPORT_ASYNC. */
ca5d48382e06537b69b713b1b772dc299e681d24vboxsync /** PDMINETWORKPORT - The network port interface. (Down) Coupled with PDMINTERFACE_NETWORK_CONNECTOR. */
ca5d48382e06537b69b713b1b772dc299e681d24vboxsync /** PDMINETWORKPORT - The network connector interface. (Up) Coupled with PDMINTERFACE_NETWORK_PORT. */
ca5d48382e06537b69b713b1b772dc299e681d24vboxsync /** PDMINETWORKCONFIG - The network configuartion interface. (Main) Used by the managment api. */
37c53e9b2c955f92dff6f11aff63809004945f17vboxsync /** PDMIAUDIOCONNECTOR - The audio driver interface. (Up) No coupling. */
1d7eb4842eb34752cbc8655fc26097b97806314dvboxsync /** PDMIAUDIOSNIFFERPORT - The Audio Sniffer Device port interface. */
37c53e9b2c955f92dff6f11aff63809004945f17vboxsync /** PDMIAUDIOSNIFFERCONNECTOR - The Audio Sniffer Driver connector interface. */
15560e9bb8e85bdbe311a5c02139b487a306859dvboxsync /** PDMIVMMDEVPORT - The VMM Device port interface. */
5931d363b6b08895843fb9bfcc9823795da1e952vboxsync /** PDMIVMMDEVCONNECTOR - The VMM Device connector interface. */
15560e9bb8e85bdbe311a5c02139b487a306859dvboxsync /** PDMILEDPORTS - The generic LED port interface. (Down) Coupled with PDMINTERFACE_LED_CONNECTORS. */
15560e9bb8e85bdbe311a5c02139b487a306859dvboxsync /** PDMILEDCONNECTORS - The generic LED connector interface. (Up) Coupled with PDMINTERFACE_LED_PORTS. */
37c53e9b2c955f92dff6f11aff63809004945f17vboxsync /** PDMIACPIPORT - ACPI port interface. (Down) Coupled with PDMINTERFACE_ACPI_CONNECTOR. */
37c53e9b2c955f92dff6f11aff63809004945f17vboxsync /** PDMIACPICONNECTOR - ACPI connector interface. (Up) Coupled with PDMINTERFACE_ACPI_PORT. */
1df46139c7299e5fbb38e49955bce0c8ad972330vboxsync /** PDMIHGCMPORT - The Host-Guest communication manager port interface. Normally implemented by VMMDev. */
37c53e9b2c955f92dff6f11aff63809004945f17vboxsync /** PDMIHGCMCONNECTOR - The Host-Guest communication manager connector interface. Normally implemented by Main::VMMDevInterface. */
1df46139c7299e5fbb38e49955bce0c8ad972330vboxsync /** VUSBIROOTHUBPORT - VUSB RootHub port interface. (Down) Coupled with PDMINTERFACE_USB_RH_CONNECTOR. */
37c53e9b2c955f92dff6f11aff63809004945f17vboxsync /** VUSBIROOTHUBCONNECTOR - VUSB RootHub connector interface. (Up) Coupled with PDMINTERFACE_USB_RH_PORT. */
37c53e9b2c955f92dff6f11aff63809004945f17vboxsync /** VUSBIRHCONFIG - VUSB RootHub configuration interface. (Main) Used by the managment api. */
1d7eb4842eb34752cbc8655fc26097b97806314dvboxsync /** VUSBIDEVICE - VUSB Device interface. (Up) No coupling. */
37c53e9b2c955f92dff6f11aff63809004945f17vboxsync /** VUSBITIMER - VUSB Timer interface. (Up) No coupling. */
37c53e9b2c955f92dff6f11aff63809004945f17vboxsync /** PDMIHOSTPARALLELPORT - The Host Parallel port interface. (Down) Coupled with PDMINTERFACE_HOST_PARALLEL_CONNECTOR. */
1df46139c7299e5fbb38e49955bce0c8ad972330vboxsync /** PDMIHOSTPARALLELCONNECTOR - The Host Parallel connector interface (Up) Coupled with PDMINTERFACE_HOST_PARALLEL_PORT. */
1df46139c7299e5fbb38e49955bce0c8ad972330vboxsync /** PDMISCSIPORT - The SCSI command execution port interface (Down) Coupled with PDMINTERFACE_SCSI_CONNECTOR. */
1df46139c7299e5fbb38e49955bce0c8ad972330vboxsync /** PDMISCSICONNECTOR - The SCSI command execution connector interface (Up) Coupled with PDMINTERFACE_SCSI_PORT. */
ce58048f6cafbf5f68163cc932fecc521de0733fvboxsync /** Maximum interface number. */
1df46139c7299e5fbb38e49955bce0c8ad972330vboxsync * PDM Driver Base Interface.
ce58048f6cafbf5f68163cc932fecc521de0733fvboxsynctypedef struct PDMIBASE
37c53e9b2c955f92dff6f11aff63809004945f17vboxsync * Queries an interface to the driver.
37c53e9b2c955f92dff6f11aff63809004945f17vboxsync * @returns Pointer to interface.
1d7eb4842eb34752cbc8655fc26097b97806314dvboxsync * @returns NULL if the interface was not supported by the driver.
1d7eb4842eb34752cbc8655fc26097b97806314dvboxsync * @param pInterface Pointer to this interface structure.
37c53e9b2c955f92dff6f11aff63809004945f17vboxsync * @param enmInterface The requested interface identification.
1d7eb4842eb34752cbc8655fc26097b97806314dvboxsync * @thread Any thread.
37c53e9b2c955f92dff6f11aff63809004945f17vboxsync DECLR3CALLBACKMEMBER(void *, pfnQueryInterface,(struct PDMIBASE *pInterface, PDMINTERFACE enmInterface));
37c53e9b2c955f92dff6f11aff63809004945f17vboxsync * Dummy interface.
37c53e9b2c955f92dff6f11aff63809004945f17vboxsync * This is used to typedef other dummy interfaces. The purpose of a dummy
37c53e9b2c955f92dff6f11aff63809004945f17vboxsync * interface is to validate the logical function of a driver/device and
37c53e9b2c955f92dff6f11aff63809004945f17vboxsync * full a natural interface pair.
1df46139c7299e5fbb38e49955bce0c8ad972330vboxsynctypedef struct PDMIDUMMY
1d7eb4842eb34752cbc8655fc26097b97806314dvboxsync/** Pointer to a mouse port interface. */
1d7eb4842eb34752cbc8655fc26097b97806314dvboxsync * Mouse port interface.
1d7eb4842eb34752cbc8655fc26097b97806314dvboxsync * Pair with PDMIMOUSECONNECTOR.
1d7eb4842eb34752cbc8655fc26097b97806314dvboxsync * Puts a mouse event.
1d7eb4842eb34752cbc8655fc26097b97806314dvboxsync * This is called by the source of mouse events. The event will be passed up until the
1d7eb4842eb34752cbc8655fc26097b97806314dvboxsync * topmost driver, which then calls the registered event handler.
1d7eb4842eb34752cbc8655fc26097b97806314dvboxsync * @returns VBox status code.
37c53e9b2c955f92dff6f11aff63809004945f17vboxsync * @param pInterface Pointer to this interface structure.
37c53e9b2c955f92dff6f11aff63809004945f17vboxsync * @param i32DeltaX The X delta.
1d7eb4842eb34752cbc8655fc26097b97806314dvboxsync * @param i32DeltaY The Y delta.
1d7eb4842eb34752cbc8655fc26097b97806314dvboxsync * @param i32DeltaZ The Z delta.
1d7eb4842eb34752cbc8655fc26097b97806314dvboxsync * @param fButtonStates The button states, see the PDMIMOUSEPORT_BUTTON_* \#defines.
1d7eb4842eb34752cbc8655fc26097b97806314dvboxsync * @thread The emulation thread.
1d7eb4842eb34752cbc8655fc26097b97806314dvboxsync DECLR3CALLBACKMEMBER(int, pfnPutEvent,(PPDMIMOUSEPORT pInterface, int32_t i32DeltaX, int32_t i32DeltaY, int32_t i32DeltaZ, uint32_t fButtonStates));
typedef struct PDMIKEYBOARDPORT
typedef enum PDMKEYBLEDS
} PDMKEYBLEDS;
typedef struct PDMIKEYBOARDCONNECTOR
DECLR3CALLBACKMEMBER(void, pfnLedStatusChange,(PPDMIKEYBOARDCONNECTOR pInterface, PDMKEYBLEDS enmLeds));
typedef struct PDMIDISPLAYPORT
DECLR3CALLBACKMEMBER(int, pfnSetRefreshRate,(PPDMIDISPLAYPORT pInterface, uint32_t cMilliesInterval));
DECLR3CALLBACKMEMBER(int, pfnSnapshot,(PPDMIDISPLAYPORT pInterface, void *pvData, size_t cbData, uint32_t *pcx, uint32_t *pcy, size_t *pcbData));
DECLR3CALLBACKMEMBER(int, pfnDisplayBlt,(PPDMIDISPLAYPORT pInterface, const void *pvData, uint32_t x, uint32_t y, uint32_t cx, uint32_t cy));
DECLR3CALLBACKMEMBER(void, pfnUpdateDisplayRect,(PPDMIDISPLAYPORT pInterface, int32_t x, int32_t y, uint32_t cx, uint32_t cy));
typedef struct PDMIDISPLAYCONNECTOR
DECLR3CALLBACKMEMBER(int, pfnResize,(PPDMIDISPLAYCONNECTOR pInterface, uint32_t cBits, void *pvVRAM, uint32_t cbLine, uint32_t cx, uint32_t cy));
DECLR3CALLBACKMEMBER(void, pfnUpdateRect,(PPDMIDISPLAYCONNECTOR pInterface, uint32_t x, uint32_t y, uint32_t cx, uint32_t cy));
DECLR3CALLBACKMEMBER(void, pfnProcessAdapterData, (PPDMIDISPLAYCONNECTOR pInterface, void *pvVRAM, uint32_t u32VRAMSize));
DECLR3CALLBACKMEMBER(void, pfnProcessDisplayData, (PPDMIDISPLAYCONNECTOR pInterface, void *pvVRAM, unsigned uScreenId));
typedef enum PDMBLOCKTYPE
} PDMBLOCKTYPE;
typedef enum PDMBLOCKTXDIR
PDMBLOCKTXDIR_NONE = 0,
typedef struct PDMIBLOCK
DECLR3CALLBACKMEMBER(int, pfnRead,(PPDMIBLOCK pInterface, uint64_t off, void *pvBuf, size_t cbRead));
DECLR3CALLBACKMEMBER(int, pfnWrite,(PPDMIBLOCK pInterface, uint64_t off, const void *pvBuf, size_t cbWrite));
DECLR3CALLBACKMEMBER(int, pfnSendCmd,(PPDMIBLOCK pInterface, const uint8_t *pbCmd, PDMBLOCKTXDIR enmTxDir, void *pvBuf, uint32_t *pcbBuf, uint8_t *pabSense, size_t cbSense, uint32_t cTimeoutMillies));
} PDMIBLOCK;
typedef struct PDMIMOUNTNOTIFY
typedef struct PDMIMOUNT
* @param pszCoreDriver Core driver name. NULL will cause autodetection. Ignored if pszFilanem is NULL.
DECLR3CALLBACKMEMBER(int, pfnMount,(PPDMIMOUNT pInterface, const char *pszFilename, const char *pszCoreDriver));
* The driver will validate and pass it on. On the rebounce it will decide whether or not to detach it self.
typedef struct PDMMEDIAGEOMETRY
typedef struct PDMIMEDIA
DECLR3CALLBACKMEMBER(int, pfnRead,(PPDMIMEDIA pInterface, uint64_t off, void *pvBuf, size_t cbRead));
DECLR3CALLBACKMEMBER(int, pfnWrite,(PPDMIMEDIA pInterface, uint64_t off, const void *pvBuf, size_t cbWrite));
* @returns VERR_PDM_GEOMETRY_NOT_SET if the geometry hasn't been set using pfnBiosSetPCHSGeometry() yet.
DECLR3CALLBACKMEMBER(int, pfnBiosGetPCHSGeometry,(PPDMIMEDIA pInterface, PPDMMEDIAGEOMETRY pPCHSGeometry));
DECLR3CALLBACKMEMBER(int, pfnBiosSetPCHSGeometry,(PPDMIMEDIA pInterface, PCPDMMEDIAGEOMETRY pPCHSGeometry));
* @returns VERR_PDM_GEOMETRY_NOT_SET if the geometry hasn't been set using pfnBiosSetLCHSGeometry() yet.
DECLR3CALLBACKMEMBER(int, pfnBiosGetLCHSGeometry,(PPDMIMEDIA pInterface, PPDMMEDIAGEOMETRY pLCHSGeometry));
DECLR3CALLBACKMEMBER(int, pfnBiosSetLCHSGeometry,(PPDMIMEDIA pInterface, PCPDMMEDIAGEOMETRY pLCHSGeometry));
} PDMIMEDIA;
typedef struct PDMIBLOCKBIOS
* @returns VERR_PDM_GEOMETRY_NOT_SET if the geometry hasn't been set using pfnSetPCHSGeometry() yet.
DECLR3CALLBACKMEMBER(int, pfnGetPCHSGeometry,(PPDMIBLOCKBIOS pInterface, PPDMMEDIAGEOMETRY pPCHSGeometry));
DECLR3CALLBACKMEMBER(int, pfnSetPCHSGeometry,(PPDMIBLOCKBIOS pInterface, PCPDMMEDIAGEOMETRY pPCHSGeometry));
* @returns VERR_PDM_GEOMETRY_NOT_SET if the geometry hasn't been set using pfnSetLCHSGeometry() yet.
DECLR3CALLBACKMEMBER(int, pfnGetLCHSGeometry,(PPDMIBLOCKBIOS pInterface, PPDMMEDIAGEOMETRY pLCHSGeometry));
DECLR3CALLBACKMEMBER(int, pfnSetLCHSGeometry,(PPDMIBLOCKBIOS pInterface, PCPDMMEDIAGEOMETRY pLCHSGeometry));
typedef struct PDMIMEDIASTATIC
typedef struct ISCSIREQ
const void *pcvSeg;
} ISCSIREQ;
typedef struct ISCSIRES
void *pvSeg;
} ISCSIRES;
typedef struct PDMIISCSITRANSPORT
DECLR3CALLBACKMEMBER(int, pfnRead,(PPDMIISCSITRANSPORT pTransport, PISCSIRES paResponses, unsigned cResponses));
DECLR3CALLBACKMEMBER(int, pfnWrite,(PPDMIISCSITRANSPORT pTransport, PISCSIREQ paRequests, unsigned cRequests));
typedef struct PDMIISCSITRANSPORTASYNC
* Start an asynchronous read request from an iSCSI transport stream. Padding is performed when necessary.
DECLR3CALLBACKMEMBER(int, pfnStartRead,(PPDMIISCSITRANSPORTASYNC pTransport, PISCSIRES paResponses, unsigned cResponses, void *pvUser));
DECLR3CALLBACKMEMBER(int, pfnStartWrite,(PPDMIISCSITRANSPORTASYNC pTransport, PISCSIREQ pRequests, unsigned cRequests, void *pvUser));
typedef struct PDMIISCSITRANSPORTASYNCPORT
DECLR3CALLBACKMEMBER(int, pfnReadCompleteNotify, (PPDMIISCSITRANSPORTASYNCPORT pInterface, PISCSIRES paResponses, unsigned cResponse, void *pvUser));
DECLR3CALLBACKMEMBER(int, pfnWriteCompleteNotify, (PPDMIISCSITRANSPORTASYNCPORT pTransport, PISCSIREQ paRequests, unsigned cRequests, void *pvUser));
typedef struct PDMIBLOCKASYNCPORT
* @param pvUser The user argument given in pfnStartWrite/Read.
DECLR3CALLBACKMEMBER(int, pfnTransferCompleteNotify, (PPDMIBLOCKASYNCPORT pInterface, void *pvUser));
typedef struct PDMIBLOCKASYNC
* @param off Offset to start reading from.c
DECLR3CALLBACKMEMBER(int, pfnStartRead,(PPDMIBLOCKASYNC pInterface, uint64_t off, PPDMDATASEG pSeg, unsigned cSeg, size_t cbRead, void *pvUser));
DECLR3CALLBACKMEMBER(int, pfnStartWrite,(PPDMIBLOCKASYNC pInterface, uint64_t off, PPDMDATASEG pSeg, unsigned cSeg, size_t cbWrite, void *pvUser));
typedef struct PDMIMEDIAASYNCPORT
DECLR3CALLBACKMEMBER(int, pfnTransferCompleteNotify, (PPDMIMEDIAASYNCPORT pInterface, void *pvUser));
typedef struct PDMIMEDIAASYNC
DECLR3CALLBACKMEMBER(int, pfnStartRead,(PPDMIMEDIAASYNC pInterface, uint64_t off, PPDMDATASEG pSeg, unsigned cSeg, size_t cbRead, void *pvUser));
DECLR3CALLBACKMEMBER(int, pfnStartWrite,(PPDMIMEDIAASYNC pInterface, uint64_t off, PPDMDATASEG pSeg, unsigned cSeg, size_t cbWrite, void *pvUser));
typedef struct PDMITRANSPORTASYNCPORT
DECLR3CALLBACKMEMBER(int, pfnTaskCompleteNotify, (PPDMITRANSPORTASYNCPORT pInterface, void *pvUser));
typedef struct PDMITRANSPORTASYNC
DECLR3CALLBACKMEMBER(int, pfnOpen, (PPDMITRANSPORTASYNC pInterface, const char *pszTargetPath, bool fReadonly, void **ppStorage));
DECLR3CALLBACKMEMBER(int, pfnPrepareRead, (PPDMITRANSPORTASYNC pInterface, void *pStorage, uint64_t uOffset,
DECLR3CALLBACKMEMBER(int, pfnPrepareWrite, (PPDMITRANSPORTASYNC pInterface, void *pStorage, uint64_t uOffset,
DECLR3CALLBACKMEMBER(int, pfnTasksSubmit, (PPDMITRANSPORTASYNC pInterface, void *apTasks[], unsigned cTasks, void *pvUser));
typedef struct PDMICHARPORT
DECLR3CALLBACKMEMBER(int, pfnNotifyRead,(PPDMICHARPORT pInterface, const void *pvBuf, size_t *pcbRead));
DECLR3CALLBACKMEMBER(int, pfnNotifyStatusLinesChanged,(PPDMICHARPORT pInterface, uint32_t fNewStatusLines));
} PDMICHARPORT;
typedef struct PDMICHAR
DECLR3CALLBACKMEMBER(int, pfnSetParameters,(PPDMICHAR pInterface, unsigned Bps, char chParity, unsigned cDataBits, unsigned cStopBits));
DECLR3CALLBACKMEMBER(int, pfnSetModemLines,(PPDMICHAR pInterface, bool fRequestToSend, bool fDataTerminalReady));
} PDMICHAR;
typedef struct PDMISTREAM
} PDMISTREAM;
typedef enum PDMPARALLELPORTMODE
typedef struct PDMIHOSTPARALLELPORT
DECLR3CALLBACKMEMBER(int, pfnNotifyRead,(PPDMIHOSTPARALLELPORT pInterface, const void *pvBuf, size_t *pcbRead));
typedef struct PDMIHOSTPARALLELCONNECTOR
DECLR3CALLBACKMEMBER(int, pfnWrite,(PPDMIHOSTPARALLELCONNECTOR pInterface, const void *pvBuf, size_t *pcbWrite));
DECLR3CALLBACKMEMBER(int, pfnRead,(PPDMIHOSTPARALLELCONNECTOR pInterface, void *pvBuf, size_t *pcbRead));
DECLR3CALLBACKMEMBER(int, pfnSetMode,(PPDMIHOSTPARALLELCONNECTOR pInterface, PDMPARALLELPORTMODE enmMode));
typedef enum PDMACPIPOWERSOURCE
typedef enum PDMACPIBATCAPACITY
typedef enum PDMACPIBATSTATE
typedef struct PDMIACPIPORT
} PDMIACPIPORT;
typedef struct PDMIACPICONNECTOR
DECLR3CALLBACKMEMBER(int, pfnQueryPowerSource,(PPDMIACPICONNECTOR, PPDMACPIPOWERSOURCE penmPowerSource));
* @param penmRemainingCapacity Pointer to the battery remaining capacity (0 - 100 or 255 for unknown).
DECLR3CALLBACKMEMBER(int, pfnQueryBatteryStatus,(PPDMIACPICONNECTOR, bool *pfPresent, PPDMACPIBATCAPACITY penmRemainingCapacity,
typedef struct PDMIVMMDEVPORT
DECLR3CALLBACKMEMBER(int, pfnQueryAbsoluteMouse,(PPDMIVMMDEVPORT pInterface, uint32_t *pAbsX, uint32_t *pAbsY));
DECLR3CALLBACKMEMBER(int, pfnSetAbsoluteMouse,(PPDMIVMMDEVPORT pInterface, uint32_t absX, uint32_t absY));
DECLR3CALLBACKMEMBER(int, pfnQueryMouseCapabilities,(PPDMIVMMDEVPORT pInterface, uint32_t *pCapabilities));
DECLR3CALLBACKMEMBER(int, pfnSetMouseCapabilities,(PPDMIVMMDEVPORT pInterface, uint32_t capabilities));
DECLR3CALLBACKMEMBER(int, pfnRequestDisplayChange,(PPDMIVMMDEVPORT pInterface, uint32_t cx, uint32_t cy, uint32_t cBits, uint32_t display));
DECLR3CALLBACKMEMBER(int, pfnSetMemoryBalloon,(PPDMIVMMDEVPORT pInterface, uint32_t ulBalloonSize));
DECLR3CALLBACKMEMBER(int, pfnSetStatisticsInterval,(PPDMIVMMDEVPORT pInterface, uint32_t ulStatInterval));
DECLR3CALLBACKMEMBER(int, pfnVRDPChange, (PPDMIVMMDEVPORT pInterface, bool fVRDPEnabled, uint32_t u32VRDPExperienceLevel));
struct _VBVAMEMORY;
struct VBoxGuestInfo;
struct VBoxGuestStatistics;
typedef struct PDMIVMMDEVCONNECTOR
DECLR3CALLBACKMEMBER(void, pfnUpdateGuestVersion,(PPDMIVMMDEVCONNECTOR pInterface, struct VBoxGuestInfo *pGuestInfo));
DECLR3CALLBACKMEMBER(void, pfnUpdateGuestCapabilities,(PPDMIVMMDEVCONNECTOR pInterface, uint32_t newCapabilities));
DECLR3CALLBACKMEMBER(void, pfnUpdateMouseCapabilities,(PPDMIVMMDEVCONNECTOR pInterface, uint32_t newCapabilities));
DECLR3CALLBACKMEMBER(void, pfnUpdatePointerShape,(PPDMIVMMDEVCONNECTOR pInterface, bool fVisible, bool fAlpha,
void *pvShape));
DECLR3CALLBACKMEMBER(int, pfnVideoAccelEnable,(PPDMIVMMDEVCONNECTOR pInterface, bool fEnable, PVBVAMEMORY pVbvaMemory));
DECLR3CALLBACKMEMBER(int, pfnVideoModeSupported,(PPDMIVMMDEVCONNECTOR pInterface, uint32_t cx, uint32_t cy, uint32_t cBits, bool *pfSupported));
DECLR3CALLBACKMEMBER(int, pfnGetHeightReduction,(PPDMIVMMDEVCONNECTOR pInterface, uint32_t *pcyReduction));
DECLR3CALLBACKMEMBER(int, pfnSetCredentialsJudgementResult,(PPDMIVMMDEVCONNECTOR pInterface, uint32_t fFlags));
DECLR3CALLBACKMEMBER(int, pfnSetVisibleRegion,(PPDMIVMMDEVCONNECTOR pInterface, uint32_t cRect, PRTRECT pRect));
DECLR3CALLBACKMEMBER(int, pfnQueryVisibleRegion,(PPDMIVMMDEVCONNECTOR pInterface, uint32_t *pcRect, PRTRECT pRect));
DECLR3CALLBACKMEMBER(int, pfnQueryStatisticsInterval,(PPDMIVMMDEVCONNECTOR pInterface, uint32_t *pulInterval));
DECLR3CALLBACKMEMBER(int, pfnReportStatistics,(PPDMIVMMDEVCONNECTOR pInterface, struct VBoxGuestStatistics *pGuestStats));
DECLR3CALLBACKMEMBER(int, pfnChangeMemoryBalloon, (PPDMIVMMDEVCONNECTOR pInterface, bool fInflate, uint32_t cPages, RTGCPHYS *aPhysPage));
typedef struct PDMINETWORKPORT
typedef enum PDMNETWORKLINKSTATE
typedef struct PDMINETWORKCONNECTOR
DECLR3CALLBACKMEMBER(int, pfnSend,(PPDMINETWORKCONNECTOR pInterface, const void *pvBuf, size_t cb));
DECLR3CALLBACKMEMBER(void, pfnSetPromiscuousMode,(PPDMINETWORKCONNECTOR pInterface, bool fPromiscuous));
DECLR3CALLBACKMEMBER(void, pfnNotifyLinkChanged,(PPDMINETWORKCONNECTOR pInterface, PDMNETWORKLINKSTATE enmLinkState));
/** @todo Add a callback that informs the driver chain about MAC address changes if we ever implement that. */
typedef struct PDMINETWORKCONFIG
DECLR3CALLBACKMEMBER(int, pfnSetLinkState,(PPDMINETWORKCONFIG pInterface, PDMNETWORKLINKSTATE enmState));
typedef struct PDMIAUDIOCONNECTOR
/* DECLR3CALLBACKMEMBER(int, pfnSetRecordSource,(PPDMIAUDIOINCONNECTOR pInterface, AUDIORECSOURCE)); */
typedef struct PDMIAUDIOSNIFFERPORT
DECLR3CALLBACKMEMBER(int, pfnSetup,(PPDMIAUDIOSNIFFERPORT pInterface, bool fEnable, bool fKeepHostAudio));
typedef struct PDMIAUDIOSNIFFERCONNECTOR
DECLR3CALLBACKMEMBER(void, pfnAudioSamplesOut,(PPDMIAUDIOSNIFFERCONNECTOR pInterface, void *pvSamples, uint32_t cSamples,
DECLR3CALLBACKMEMBER(void, pfnAudioVolumeOut,(PPDMIAUDIOSNIFFERCONNECTOR pInterface, uint16_t u16LeftVolume, uint16_t u16RightVolume));
typedef union PDMLEDCORE
} PDMLEDCORE;
typedef struct PDMLED
} PDMLED;
typedef struct PDMILEDPORTS
DECLR3CALLBACKMEMBER(int, pfnQueryStatusLed,(PPDMILEDPORTS pInterface, unsigned iLUN, PPDMLED *ppLed));
} PDMILEDPORTS;
typedef struct PDMILEDCONNECTORS
#ifdef VBOX_WITH_HGCM
struct VBOXHGCMCMD;
typedef struct PDMIHGCMPORT
} PDMIHGCMPORT;
typedef struct PDMIHGCMCONNECTOR
DECLR3CALLBACKMEMBER(int, pfnConnect,(PPDMIHGCMCONNECTOR pInterface, PVBOXHGCMCMD pCmd, PHGCMSERVICELOCATION pServiceLocation, uint32_t *pu32ClientID));
DECLR3CALLBACKMEMBER(int, pfnDisconnect,(PPDMIHGCMCONNECTOR pInterface, PVBOXHGCMCMD pCmd, uint32_t u32ClientID));
DECLR3CALLBACKMEMBER(int, pfnCall,(PPDMIHGCMCONNECTOR pInterface, PVBOXHGCMCMD pCmd, uint32_t u32ClientID, uint32_t u32Function,
typedef enum PDMSCSIREQUESTTXDIR
typedef struct PDMSCSIREQUEST
void *pvUser;
typedef struct PDMISCSIPORT
DECLR3CALLBACKMEMBER(int, pfnSCSIRequestCompleted, (PPDMISCSIPORT pInterface, PPDMSCSIREQUEST pSCSIRequest, int rcCompletion));
} PDMISCSIPORT;
typedef struct PDMISCSICONNECTOR