VirtualBox

Changeset 48229 in vbox for trunk/src


Ignore:
Timestamp:
Sep 2, 2013 12:57:44 PM (11 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
88622
Message:

Main/HGCM: add plugin support (preparing for HGCM modules in an extension pack), just like it's done in VRDE

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Main/src-client/HGCM.cpp

    r48012 r48229  
    55
    66/*
    7  * Copyright (C) 2006-2011 Oracle Corporation
     7 * Copyright (C) 2006-2013 Oracle Corporation
    88 *
    99 * This file is part of VirtualBox Open Source Edition (OSE), as
     
    255255 *  @return VBox code
    256256 */
    257 int HGCMService::loadServiceDLL (void)
     257int HGCMService::loadServiceDLL(void)
    258258{
    259259    LogFlowFunc(("m_pszSvcLibrary = %s\n", m_pszSvcLibrary));
     
    265265
    266266    RTERRINFOSTATIC ErrInfo;
    267     RTErrInfoInitStatic (&ErrInfo);
    268 
    269     int rc = SUPR3HardenedLdrLoadAppPriv (m_pszSvcLibrary, &m_hLdrMod, RTLDRLOAD_FLAGS_LOCAL, &ErrInfo.Core);
     267    RTErrInfoInitStatic(&ErrInfo);
     268
     269    int rc;
     270
     271    if (RTPathHasPath(m_pszSvcLibrary))
     272        rc = SUPR3HardenedLdrLoadPlugIn(m_pszSvcLibrary, &m_hLdrMod, &ErrInfo.Core);
     273    else
     274        rc = SUPR3HardenedLdrLoadAppPriv(m_pszSvcLibrary, &m_hLdrMod, RTLDRLOAD_FLAGS_LOCAL, &ErrInfo.Core);
    270275
    271276    if (RT_SUCCESS(rc))
     
    275280        m_pfnLoad = NULL;
    276281
    277         rc = RTLdrGetSymbol (m_hLdrMod, VBOX_HGCM_SVCLOAD_NAME, (void**)&m_pfnLoad);
     282        rc = RTLdrGetSymbol(m_hLdrMod, VBOX_HGCM_SVCLOAD_NAME, (void**)&m_pfnLoad);
    278283
    279284        if (RT_FAILURE(rc) || !m_pfnLoad)
     
    292297            RT_ZERO(m_fntable);
    293298
    294             m_fntable.cbSize     = sizeof (m_fntable);
     299            m_fntable.cbSize     = sizeof(m_fntable);
    295300            m_fntable.u32Version = VBOX_HGCM_SVC_VERSION;
    296301            m_fntable.pHelpers   = &m_svcHelpers;
    297302
    298             rc = m_pfnLoad (&m_fntable);
     303            rc = m_pfnLoad(&m_fntable);
    299304
    300305            LogFlowFunc(("m_pfnLoad rc = %Rrc\n", rc));
     
    314319                    if (m_fntable.pfnUnload)
    315320                    {
    316                         m_fntable.pfnUnload (m_fntable.pvService);
     321                        m_fntable.pfnUnload(m_fntable.pvService);
    317322                    }
    318323                }
     
    329334    if (RT_FAILURE(rc))
    330335    {
    331         unloadServiceDLL ();
     336        unloadServiceDLL();
    332337    }
    333338
     
    339344 *  @return VBox code
    340345 */
    341 void HGCMService::unloadServiceDLL (void)
     346void HGCMService::unloadServiceDLL(void)
    342347{
    343348    if (m_hLdrMod)
    344349    {
    345         RTLdrClose (m_hLdrMod);
     350        RTLdrClose(m_hLdrMod);
    346351    }
    347352
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