VBoxGuestIDC-unix.c.h revision 9fcdc7fdfa2d71eb0eb8fa548f4940a1eb0e1539
de4157257515400c2c25373591135f110227b68cvboxsync * VBoxGuest - Inter Driver Communication, unix implementation.
de4157257515400c2c25373591135f110227b68cvboxsync * This file is included by the platform specific source file.
b263fac6f6e7fa933c7bfb2a45d598fe8e458c09vboxsync * Copyright (C) 2006-2013 Oracle Corporation
b263fac6f6e7fa933c7bfb2a45d598fe8e458c09vboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
b263fac6f6e7fa933c7bfb2a45d598fe8e458c09vboxsync * available from http://www.virtualbox.org. This file is free software;
b263fac6f6e7fa933c7bfb2a45d598fe8e458c09vboxsync * you can redistribute it and/or modify it under the terms of the GNU
b263fac6f6e7fa933c7bfb2a45d598fe8e458c09vboxsync * General Public License (GPL) as published by the Free Software
b263fac6f6e7fa933c7bfb2a45d598fe8e458c09vboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
b263fac6f6e7fa933c7bfb2a45d598fe8e458c09vboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
b263fac6f6e7fa933c7bfb2a45d598fe8e458c09vboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
b263fac6f6e7fa933c7bfb2a45d598fe8e458c09vboxsync * The contents of this file may alternatively be used under the terms
de4157257515400c2c25373591135f110227b68cvboxsync * of the Common Development and Distribution License Version 1.0
de4157257515400c2c25373591135f110227b68cvboxsync * (CDDL) only, as it comes in the "COPYING.CDDL" file of the
de4157257515400c2c25373591135f110227b68cvboxsync * VirtualBox OSE distribution, in which case the provisions of the
de4157257515400c2c25373591135f110227b68cvboxsync * CDDL are applicable instead of those of the GPL.
de4157257515400c2c25373591135f110227b68cvboxsync * You may elect to license modified versions of this file under the
de4157257515400c2c25373591135f110227b68cvboxsync * terms and conditions of either the GPL or the CDDL or both.
de4157257515400c2c25373591135f110227b68cvboxsync/** @todo Use some header that we have in common with VBoxGuestLib.h... */
de4157257515400c2c25373591135f110227b68cvboxsync/** @todo fix DECLVBGL usage. */
de4157257515400c2c25373591135f110227b68cvboxsyncDECLEXPORT(void *) VBOXCALL VBoxGuestIDCOpen(uint32_t *pu32Version);
de4157257515400c2c25373591135f110227b68cvboxsyncDECLEXPORT(int) VBOXCALL VBoxGuestIDCClose(void *pvSession);
de4157257515400c2c25373591135f110227b68cvboxsyncDECLEXPORT(int) VBOXCALL VBoxGuestIDCCall(void *pvSession, unsigned iCmd, void *pvData, size_t cbData, size_t *pcbDataReturned);
de4157257515400c2c25373591135f110227b68cvboxsync * Open a new IDC connection.
de4157257515400c2c25373591135f110227b68cvboxsync * @returns Opaque pointer to session object.
de4157257515400c2c25373591135f110227b68cvboxsync * @param pu32Version Where to store VMMDev version.
de4157257515400c2c25373591135f110227b68cvboxsyncDECLEXPORT(void *) VBOXCALL VBoxGuestIDCOpen(uint32_t *pu32Version)
de4157257515400c2c25373591135f110227b68cvboxsync LogFlow(("VBoxGuestIDCOpen: Version=%#x\n", pu32Version ? *pu32Version : 0));
de4157257515400c2c25373591135f110227b68cvboxsync rc = ldi_open_by_name(VBOXGUEST_DEVICE_NAME, FREAD, kcred, &g_LdiHandle, DevIdent);
de4157257515400c2c25373591135f110227b68cvboxsync LogRel(("VBoxGuestIDCOpen: ldi_open_by_name failed. rc=%d\n", rc));
de4157257515400c2c25373591135f110227b68cvboxsync rc = VBoxGuestCreateKernelSession(&g_DevExt, &pSession);
de4157257515400c2c25373591135f110227b68cvboxsync LogRel(("VBoxGuestIDCOpen: VBoxGuestCreateKernelSession failed. rc=%d\n", rc));
de4157257515400c2c25373591135f110227b68cvboxsync * Close an IDC connection.
de4157257515400c2c25373591135f110227b68cvboxsync * @returns VBox error code.
de4157257515400c2c25373591135f110227b68cvboxsync * @param pvState Opaque pointer to the session object.
de4157257515400c2c25373591135f110227b68cvboxsyncDECLEXPORT(int) VBOXCALL VBoxGuestIDCClose(void *pvSession)
de4157257515400c2c25373591135f110227b68cvboxsync PVBOXGUESTSESSION pSession = (PVBOXGUESTSESSION)pvSession;
de4157257515400c2c25373591135f110227b68cvboxsync * Perform an IDC call.
de4157257515400c2c25373591135f110227b68cvboxsync * @returns VBox error code.
de4157257515400c2c25373591135f110227b68cvboxsync * @param pvSession Opaque pointer to the session.
de4157257515400c2c25373591135f110227b68cvboxsync * @param iCmd Requested function.
de4157257515400c2c25373591135f110227b68cvboxsync * @param pvData IO data buffer.
de4157257515400c2c25373591135f110227b68cvboxsync * @param cbData Size of the data buffer.
de4157257515400c2c25373591135f110227b68cvboxsync * @param pcbDataReturned Where to store the amount of returned data.
de4157257515400c2c25373591135f110227b68cvboxsyncDECLEXPORT(int) VBOXCALL VBoxGuestIDCCall(void *pvSession, unsigned iCmd, void *pvData, size_t cbData, size_t *pcbDataReturned)
de4157257515400c2c25373591135f110227b68cvboxsync PVBOXGUESTSESSION pSession = (PVBOXGUESTSESSION)pvSession;
de4157257515400c2c25373591135f110227b68cvboxsync LogFlow(("VBoxGuestIDCCall: %pvSession=%p Cmd=%u pvData=%p cbData=%d\n", pvSession, iCmd, pvData, cbData));
de4157257515400c2c25373591135f110227b68cvboxsync ("SC: %p != %p\n", pSession->pDevExt, &g_DevExt), VERR_INVALID_HANDLE);