VBoxGuestR3LibModule.cpp revision 4f4da0da54c6ffb166be2538d43cd0f79e0eb97c
32ded45b3caba42c8a2315a20bbfabb513fa54c1vboxsync * VBoxGuestR3Lib - Ring-3 Support Library for VirtualBox guest additions, Shared modules.
dc23707aec4dc2ce2c6b6f51af21eef72bb8bf2evboxsync * Copyright (C) 2007-2010 Oracle Corporation
dc23707aec4dc2ce2c6b6f51af21eef72bb8bf2evboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
dc23707aec4dc2ce2c6b6f51af21eef72bb8bf2evboxsync * available from http://www.virtualbox.org. This file is free software;
dc23707aec4dc2ce2c6b6f51af21eef72bb8bf2evboxsync * you can redistribute it and/or modify it under the terms of the GNU
dc23707aec4dc2ce2c6b6f51af21eef72bb8bf2evboxsync * General Public License (GPL) as published by the Free Software
dc23707aec4dc2ce2c6b6f51af21eef72bb8bf2evboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
dc23707aec4dc2ce2c6b6f51af21eef72bb8bf2evboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
dc23707aec4dc2ce2c6b6f51af21eef72bb8bf2evboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
dc23707aec4dc2ce2c6b6f51af21eef72bb8bf2evboxsync * The contents of this file may alternatively be used under the terms
dc23707aec4dc2ce2c6b6f51af21eef72bb8bf2evboxsync * of the Common Development and Distribution License Version 1.0
dc23707aec4dc2ce2c6b6f51af21eef72bb8bf2evboxsync * (CDDL) only, as it comes in the "COPYING.CDDL" file of the
dc23707aec4dc2ce2c6b6f51af21eef72bb8bf2evboxsync * VirtualBox OSE distribution, in which case the provisions of the
dc23707aec4dc2ce2c6b6f51af21eef72bb8bf2evboxsync * CDDL are applicable instead of those of the GPL.
dc23707aec4dc2ce2c6b6f51af21eef72bb8bf2evboxsync * You may elect to license modified versions of this file under the
dc23707aec4dc2ce2c6b6f51af21eef72bb8bf2evboxsync * terms and conditions of either the GPL or the CDDL or both.
dc23707aec4dc2ce2c6b6f51af21eef72bb8bf2evboxsync/*******************************************************************************
9148e7ca5f9ee1d467112d347bfb2de2b97254d2vboxsync* Header Files *
dc23707aec4dc2ce2c6b6f51af21eef72bb8bf2evboxsync*******************************************************************************/
9148e7ca5f9ee1d467112d347bfb2de2b97254d2vboxsync * Registers a new shared module for the VM
9148e7ca5f9ee1d467112d347bfb2de2b97254d2vboxsync * @returns IPRT status code.
32ded45b3caba42c8a2315a20bbfabb513fa54c1vboxsync * @param pszModuleName Module name
dc23707aec4dc2ce2c6b6f51af21eef72bb8bf2evboxsync * @param pszVersion Module version
dc23707aec4dc2ce2c6b6f51af21eef72bb8bf2evboxsync * @param GCBaseAddr Module base address
dc23707aec4dc2ce2c6b6f51af21eef72bb8bf2evboxsync * @param cbModule Module size
32ded45b3caba42c8a2315a20bbfabb513fa54c1vboxsync * @param cRegions Number of shared region descriptors
dc23707aec4dc2ce2c6b6f51af21eef72bb8bf2evboxsync * @param pRegions Shared region(s)
dc23707aec4dc2ce2c6b6f51af21eef72bb8bf2evboxsyncVBGLR3DECL(int) VbglR3RegisterSharedModule(char *pszModuleName, char *pszVersion,
dc23707aec4dc2ce2c6b6f51af21eef72bb8bf2evboxsync unsigned cRegions, VMMDEVSHAREDREGIONDESC *pRegions)
9148e7ca5f9ee1d467112d347bfb2de2b97254d2vboxsync /* Sanity check. */
32ded45b3caba42c8a2315a20bbfabb513fa54c1vboxsync AssertReturn(cRegions < VMMDEVSHAREDREGIONDESC_MAX, VERR_INVALID_PARAMETER);
32ded45b3caba42c8a2315a20bbfabb513fa54c1vboxsync pReq = (VMMDevSharedModuleRegistrationRequest *)RTMemAllocZ(RT_OFFSETOF(VMMDevSharedModuleRegistrationRequest, aRegions[cRegions]));
dc23707aec4dc2ce2c6b6f51af21eef72bb8bf2evboxsync vmmdevInitRequest(&pReq->header, VMMDevReq_RegisterSharedModule);
9148e7ca5f9ee1d467112d347bfb2de2b97254d2vboxsync /** todo */
dc23707aec4dc2ce2c6b6f51af21eef72bb8bf2evboxsync for (unsigned i = 0; i < cRegions; i++)
dc23707aec4dc2ce2c6b6f51af21eef72bb8bf2evboxsync if ( RTStrCopy(pReq->szName, sizeof(pReq->szName), pszModuleName) != VINF_SUCCESS
dc23707aec4dc2ce2c6b6f51af21eef72bb8bf2evboxsync || RTStrCopy(pReq->szVersion, sizeof(pReq->szVersion), pszVersion) != VINF_SUCCESS)
dc23707aec4dc2ce2c6b6f51af21eef72bb8bf2evboxsync * Unregisters a shared module for the VM
32ded45b3caba42c8a2315a20bbfabb513fa54c1vboxsync * @returns IPRT status code.
dc23707aec4dc2ce2c6b6f51af21eef72bb8bf2evboxsync * @param pszModuleName Module name
dc23707aec4dc2ce2c6b6f51af21eef72bb8bf2evboxsync * @param pszVersion Module version
dc23707aec4dc2ce2c6b6f51af21eef72bb8bf2evboxsync * @param GCBaseAddr Module base address
dc23707aec4dc2ce2c6b6f51af21eef72bb8bf2evboxsync * @param cbModule Module size
dc23707aec4dc2ce2c6b6f51af21eef72bb8bf2evboxsyncVBGLR3DECL(int) VbglR3UnregisterSharedModule(char *pszModuleName, char *pszVersion, RTGCPTR64 GCBaseAddr, uint32_t cbModule)
dc23707aec4dc2ce2c6b6f51af21eef72bb8bf2evboxsync vmmdevInitRequest(&Req.header, VMMDevReq_UnregisterSharedModule);
dc23707aec4dc2ce2c6b6f51af21eef72bb8bf2evboxsync if ( RTStrCopy(Req.szName, sizeof(Req.szName), pszModuleName) != VINF_SUCCESS
dc23707aec4dc2ce2c6b6f51af21eef72bb8bf2evboxsync || RTStrCopy(Req.szVersion, sizeof(Req.szVersion), pszVersion) != VINF_SUCCESS)
dc23707aec4dc2ce2c6b6f51af21eef72bb8bf2evboxsync * Checks registered modules for shared pages
9148e7ca5f9ee1d467112d347bfb2de2b97254d2vboxsync * @returns IPRT status code.
9148e7ca5f9ee1d467112d347bfb2de2b97254d2vboxsync vmmdevInitRequest(&Req.header, VMMDevReq_CheckSharedModules);
9148e7ca5f9ee1d467112d347bfb2de2b97254d2vboxsync * Checks if page sharing is enabled.
dc23707aec4dc2ce2c6b6f51af21eef72bb8bf2evboxsync vmmdevInitRequest(&Req.header, VMMDevReq_GetPageSharingStatus);
dc23707aec4dc2ce2c6b6f51af21eef72bb8bf2evboxsync return false;