VirtualBox

Changeset 41352 in vbox


Ignore:
Timestamp:
May 18, 2012 12:19:49 PM (13 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
78034
Message:

Main: remote smartcard

Location:
trunk/src/VBox/Main
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Main/Makefile.kmk

    r41184 r41352  
    607607        $(if $(VBOX_WITH_EXTPACK),src-all/ExtPackManagerImpl.cpp src-all/ExtPackUtil.cpp,) \
    608608        $(if $(VBOX_WITH_USB_VIDEO),src-client/UsbWebcamInterface.cpp,) \
     609        $(if $(VBOX_WITH_USB_CARDREADER),src-client/UsbCardReader.cpp,) \
    609610        src-client/AdditionsFacilityImpl.cpp \
    610611        src-client/AudioSnifferInterface.cpp \
  • trunk/src/VBox/Main/include/ConsoleImpl.h

    r41214 r41352  
    3636#ifdef VBOX_WITH_USB_VIDEO
    3737class UsbWebcamInterface;
     38#endif
     39#ifdef VBOX_WITH_USB_CARDREADER
     40class UsbCardReader;
    3841#endif
    3942class ConsoleVRDPServer;
     
    220223#endif
    221224    EventSource *getEventSource() { return mEventSource; }
     225#ifdef VBOX_WITH_USB_CARDREADER
     226    UsbCardReader *getUsbCardReader() { return mUsbCardReader; }
     227#endif
    222228
    223229    int VRDPClientLogon(uint32_t u32ClientId, const char *pszUser, const char *pszPassword, const char *pszDomain);
     
    760766    UsbWebcamInterface * const mUsbWebcamInterface;
    761767#endif
     768#ifdef VBOX_WITH_USB_CARDREADER
     769    UsbCardReader * const mUsbCardReader;
     770#endif
    762771    BusAssignmentManager* mBusMgr;
    763772
  • trunk/src/VBox/Main/include/ConsoleVRDPServer.h

    r40626 r41352  
    2626#include <VBox/RemoteDesktop/VRDEImage.h>
    2727#include <VBox/RemoteDesktop/VRDEMousePtr.h>
     28#include <VBox/RemoteDesktop/VRDESCard.h>
    2829
    2930#include <VBox/HostServices/VBoxClipboardExt.h>
     
    142143    int SendVideoSreamOn(bool fFetch);
    143144#endif
     145
     146    int SCardRequest(void *pvUser, uint32_t u32Function, const void *pvData, uint32_t cbData);
    144147
    145148private:
     
    263266    /* Mouse pointer interface. */
    264267    VRDEMOUSEPTRINTERFACE m_interfaceMousePtr;
     268
     269    /* Smartcard interface. */
     270    VRDESCARDINTERFACE m_interfaceSCard;
     271    VRDESCARDCALLBACKS m_interfaceCallbacksSCard;
     272    static DECLCALLBACK(int) VRDESCardCbNotify(void *pvContext,
     273                                               uint32_t u32Id,
     274                                               void *pvData,
     275                                               uint32_t cbData);
     276    static DECLCALLBACK(int) VRDESCardCbResponse(void *pvContext,
     277                                                 int rcRequest,
     278                                                 void *pvUser,
     279                                                 uint32_t u32Function,
     280                                                 void *pvData,
     281                                                 uint32_t cbData);
    265282};
    266283
  • trunk/src/VBox/Main/src-client/ConsoleImpl.cpp

    r41214 r41352  
    6060# include "UsbWebcamInterface.h"
    6161#endif
     62#ifdef VBOX_WITH_USB_CARDREADER
     63# include "UsbCardReader.h"
     64#endif
    6265#include "ProgressCombinedImpl.h"
    6366#include "ConsoleVRDPServer.h"
     
    376379    , mUsbWebcamInterface(NULL)
    377380#endif
     381#ifdef VBOX_WITH_USB_CARDREADER
     382    , mUsbCardReader(NULL)
     383#endif
    378384    , mBusMgr(NULL)
    379385    , mVMStateChangeCallbackDisabled(false)
     
    532538    AssertReturn(mUsbWebcamInterface, E_FAIL);
    533539#endif
     540#ifdef VBOX_WITH_USB_CARDREADER
     541    unconst(mUsbCardReader) = new UsbCardReader(this);
     542    AssertReturn(mUsbCardReader, E_FAIL);
     543#endif
    534544
    535545    /* VirtualBox events registration. */
     
    624634        delete mUsbWebcamInterface;
    625635        unconst(mUsbWebcamInterface) = NULL;
     636    }
     637#endif
     638
     639#ifdef VBOX_WITH_USB_CARDREADER
     640    if (mUsbCardReader)
     641    {
     642        delete mUsbCardReader;
     643        unconst(mUsbCardReader) = NULL;
    626644    }
    627645#endif
  • trunk/src/VBox/Main/src-client/ConsoleImpl2.cpp

    r40845 r41352  
    23432343                InsertConfigString(pLunL0,    "Driver", "DrvDirectCardReader");
    23442344                InsertConfigNode(pLunL0,    "Config", &pCfg);
     2345# else
     2346                InsertConfigString(pLunL0,    "Driver", "UsbCardReader");
     2347                InsertConfigNode(pLunL0,    "Config", &pCfg);
     2348                InsertConfigInteger(pCfg,   "Object", (uintptr_t)mUsbCardReader);
    23452349# endif
    23462350#endif
  • trunk/src/VBox/Main/src-client/ConsoleVRDPServer.cpp

    r40626 r41352  
    2626#endif
    2727#include "VMMDev.h"
     28#ifdef VBOX_WITH_USB_CARDREADER
     29# include "UsbCardReader.h"
     30#endif
    2831
    2932#include "Global.h"
     
    13721375    memset(&m_interfaceCallbacksImage, 0, sizeof (m_interfaceCallbacksImage));
    13731376    RT_ZERO(m_interfaceMousePtr);
     1377    RT_ZERO(m_interfaceSCard);
     1378    RT_ZERO(m_interfaceCallbacksSCard);
    13741379}
    13751380
     
    16011606                    }
    16021607
     1608                    /* Smartcard interface. */
     1609                    m_interfaceSCard.header.u64Version = 1;
     1610                    m_interfaceSCard.header.u64Size = sizeof(m_interfaceSCard);
     1611
     1612                    m_interfaceCallbacksSCard.header.u64Version = 1;
     1613                    m_interfaceCallbacksSCard.header.u64Size = sizeof(m_interfaceCallbacksSCard);
     1614                    m_interfaceCallbacksSCard.VRDESCardCbNotify = VRDESCardCbNotify;
     1615                    m_interfaceCallbacksSCard.VRDESCardCbResponse = VRDESCardCbResponse;
     1616
     1617                    vrc = mpEntryPoints->VRDEGetInterface(mhServer,
     1618                                                          VRDE_SCARD_INTERFACE_NAME,
     1619                                                          &m_interfaceSCard.header,
     1620                                                          &m_interfaceCallbacksSCard.header,
     1621                                                          this);
     1622                    if (RT_SUCCESS(vrc))
     1623                    {
     1624                        LogRel(("VRDE: [%s]\n", VRDE_SCARD_INTERFACE_NAME));
     1625                    }
     1626                    else
     1627                    {
     1628                        RT_ZERO(m_interfaceSCard);
     1629                    }
     1630
    16031631                    /* Since these interfaces are optional, it is always a success here. */
    16041632                    vrc = VINF_SUCCESS;
     
    19711999
    19722000    return VINF_SUCCESS;
     2001}
     2002
     2003/* static */ DECLCALLBACK(int) ConsoleVRDPServer::VRDESCardCbNotify(void *pvContext,
     2004                                                                    uint32_t u32Id,
     2005                                                                    void *pvData,
     2006                                                                    uint32_t cbData)
     2007{
     2008#ifdef VBOX_WITH_USB_CARDREADER
     2009    ConsoleVRDPServer *pThis = static_cast<ConsoleVRDPServer*>(pvContext);
     2010    UsbCardReader *pReader = pThis->mConsole->getUsbCardReader();
     2011    return pReader->VRDENotify(u32Id, pvData, cbData);
     2012#else
     2013    NOREF(pvContext);
     2014    NOREF(u32Id);
     2015    NOREF(pvData);
     2016    NOREF(cbData);
     2017    return VERR_NOT_SUPPORTED;
     2018#endif
     2019}
     2020
     2021/* static */ DECLCALLBACK(int) ConsoleVRDPServer::VRDESCardCbResponse(void *pvContext,
     2022                                                                      int rcRequest,
     2023                                                                      void *pvUser,
     2024                                                                      uint32_t u32Function,
     2025                                                                      void *pvData,
     2026                                                                      uint32_t cbData)
     2027{
     2028#ifdef VBOX_WITH_USB_CARDREADER
     2029    ConsoleVRDPServer *pThis = static_cast<ConsoleVRDPServer*>(pvContext);
     2030    UsbCardReader *pReader = pThis->mConsole->getUsbCardReader();
     2031    return pReader->VRDEResponse(rcRequest, pvUser, u32Function, pvData, cbData);
     2032#else
     2033    NOREF(pvContext);
     2034    NOREF(rcRequest);
     2035    NOREF(pvUser);
     2036    NOREF(u32Function);
     2037    NOREF(pvData);
     2038    NOREF(cbData);
     2039    return VERR_NOT_SUPPORTED;
     2040#endif
     2041}
     2042
     2043int ConsoleVRDPServer::SCardRequest(void *pvUser, uint32_t u32Function, const void *pvData, uint32_t cbData)
     2044{
     2045    int rc = VINF_SUCCESS;
     2046
     2047    if (mhServer && mpEntryPoints && m_interfaceSCard.VRDESCardRequest)
     2048    {
     2049        rc = m_interfaceSCard.VRDESCardRequest(mhServer, pvUser, u32Function, pvData, cbData);
     2050    }
     2051    else
     2052    {
     2053        rc = VERR_NOT_SUPPORTED;
     2054    }
     2055
     2056    return rc;
    19732057}
    19742058
  • trunk/src/VBox/Main/src-client/VBoxDriversRegister.cpp

    r37282 r41352  
    2727#ifdef VBOX_WITH_USB_VIDEO
    2828# include "UsbWebcamInterface.h"
     29#endif
     30#ifdef VBOX_WITH_USB_CARDREADER
     31# include "UsbCardReader.h"
    2932#endif
    3033#include "ConsoleImpl.h"
     
    7679#endif
    7780
     81#ifdef VBOX_WITH_USB_CARDREADER
     82    rc = pCallbacks->pfnRegister(pCallbacks, &UsbCardReader::DrvReg);
     83    if (RT_FAILURE(rc))
     84        return rc;
     85#endif
     86
    7887    rc = pCallbacks->pfnRegister(pCallbacks, &Console::DrvStatusReg);
    7988    if (RT_FAILURE(rc))
Note: See TracChangeset for help on using the changeset viewer.

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