VirtualBox

Changeset 10259 in vbox for trunk/include


Ignore:
Timestamp:
Jul 4, 2008 11:31:43 PM (17 years ago)
Author:
vboxsync
Message:

Inter-Driver Communication (IDC) interface for the support driver. The client end (SUPR0IdcClient).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/sup.h

    r9736 r10259  
    665665SUPR0DECL(int) SUPR0Printf(const char *pszFormat, ...);
    666666
     667
    667668/**
    668669 * Support driver component factory.
     
    696697/** Pointer to a support driver factory. */
    697698typedef SUPDRVFACTORY *PSUPDRVFACTORY;
     699/** Pointer to a const support driver factory. */
     700typedef SUPDRVFACTORY const *PCSUPDRVFACTORY;
    698701
    699702/**
     
    743746 * This follows the usual high word / low word rules, i.e. high word is the
    744747 * major number and it signifies incompatible interface changes. */
    745 #define SUPDRV_IDC_VERSION                  0x00010000
    746 
    747 /**
    748  * The SUPDRV IDC entry point.
    749  *
    750  * (IDC = Inter-Driver Communication)
    751  *
    752  * @returns VBox status code.
    753  *
    754  * @param   pSession    The session. (This is NULL for SUPDRV_IDC_REQ_CONNECT.)
    755  * @param   iReq        The request number.
    756  * @param   pvReq       Pointer to the request packet. Optional for some requests.
    757  * @param   cbReq       The size of the request packet.
    758  */
    759 typedef DECLCALLBACK(int) FNSUPDRVIDCENTRY(PSUPDRVSESSION pSession, uint32_t iReq, void *pvReq, uint32_t cbReq);
    760 /** Pointer to the SUPDRV IDC entry point. */
    761 typedef FNSUPDRVIDCENTRY *PFNSUPDRVIDCENTRY;
    762 
    763 
    764 /**
    765  * SUPDRV IDC: Connect request.
    766  * This request takes a SUPDRVIDCREQCONNECT packet.
    767  */
    768 #define SUPDRV_IDC_REQ_CONNECT                          UINT32_C(0xc0ffee01)
    769 /** A SUPDRV IDC connect request packet. */
    770 typedef union SUPDRVIDCREQCONNECT
    771 {
    772     /** The input. */
    773     struct SUPDRVIDCREQCONNECTIN
    774     {
    775         /** The magic cookie (SUPDRVIDCREQ_CONNECT_MAGIC). */
    776         uint32_t        u32MagicCookie;
    777         /** The desired version of the IDC interface. */
    778         uint32_t        iReqVersion;
    779         /** The minimum version of the IDC interface. */
    780         uint32_t        iMinVersion;
    781     } In;
    782 
    783     /** The output. */
    784     struct SUPDRVIDCREQCONNECTOUT
    785     {
    786         /** The support driver session. (An opaque.) */
    787         PSUPDRVSESSION  pSession;
    788         /** The version of the IDC interface for this session. */
    789         uint32_t        iVersion;
    790     } Out;
    791 } SUPDRVIDCREQCONNECT;
    792 /** Pointer to a SUPDRV IDC connect request. */
    793 typedef SUPDRVIDCREQCONNECT *PSUPDRVIDCREQCONNECT;
    794 /** Magic cookie value (SUPDRVIDCREQCONNECT::In.u32MagicCookie). ('tori') */
    795 #define SUPDRVIDCREQ_CONNECT_MAGIC_COOKIE               UINT32_C(0x69726f74)
    796 
    797 
    798 /**
    799  * SUPDRV IDC: Disconnect request.
    800  * This request does not take request packet.
    801  */
    802 #define SUPDRV_IDC_REQ_DISCONNECT                       UINT32_C(0xc0ffee02)
    803 
    804 
    805 /**
    806  * SUPDRV IDC: Disconnect request.
    807  * This request takes a SUPDRVFACTORY packet.
    808  */
    809 #define SUPDRV_IDC_REQ_COMPONENT_REGISTER_FACTORY       UINT32_C(0xc0ffee03)
    810 
    811 
    812 /**
    813  * SUPDRV IDC: Dergister a component factory.
    814  * This request takes a SUPDRVFACTORY packet.
    815  */
    816 #define SUPDRV_IDC_REQ_COMPONENT_DEREGISTER_FACTORY     UINT32_C(0xc0ffee04)
     748#define SUPDRV_IDC_VERSION      UINT32_C(0x00010000)
     749
     750/**
     751 * Inter-Driver Communcation Handle.
     752 */
     753typedef union SUPDRVIDCHANDLE
     754{
     755    /** Padding for opaque usage.
     756     * Must be greater or equal in size than the private struct. */
     757    void *apvPadding[4];
     758#ifdef SUPDRVIDCHANDLEPRIVATE_DECLARED
     759    /** The private view. */
     760    struct SUPDRVIDCHANDLEPRIVATE s;
     761#endif
     762} SUPDRVIDCHANDLE;
     763/** Pointer to a handle. */
     764typedef SUPDRVIDCHANDLE *PSUPDRVIDCHANDLE;
     765
     766SUPR0DECL(int) SUPR0IdcOpen(PSUPDRVIDCHANDLE pHandle, uint32_t uReqVersion, uint32_t uMinVersion, uint32_t *puVersion);
     767SUPR0DECL(int) SUPR0IdcCall(PSUPDRVIDCHANDLE pHandle, uint32_t iReq, void *pvReq, uint32_t cbReq);
     768SUPR0DECL(int) SUPR0IdcClose(PSUPDRVIDCHANDLE pHandle);
     769SUPR0DECL(PSUPDRVSESSION) SUPR0IdcGetSession(PSUPDRVIDCHANDLE pHandle);
     770SUPR0DECL(int) SUPR0IdcComponentRegisterFactory(PSUPDRVIDCHANDLE pHandle, PCSUPDRVFACTORY pFactory);
     771SUPR0DECL(int) SUPR0IdcComponentDeregisterFactory(PSUPDRVIDCHANDLE pHandle, PCSUPDRVFACTORY pFactory);
    817772
    818773/** @} */
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette