VBoxSFInit.cpp revision 590bfe12ce22cd3716448fbb9f4dc51664bfe5e2
0f0fa99ce6af43d7a38d97fdecc89eae0bf89fdfvboxsync * VBoxSF - OS/2 Shared Folders, Initialization.
0f0fa99ce6af43d7a38d97fdecc89eae0bf89fdfvboxsync * Copyright (c) 2007 knut st. osmundsen <bird-src-spam@anduin.net>
0f0fa99ce6af43d7a38d97fdecc89eae0bf89fdfvboxsync * Permission is hereby granted, free of charge, to any person
0f0fa99ce6af43d7a38d97fdecc89eae0bf89fdfvboxsync * obtaining a copy of this software and associated documentation
0f0fa99ce6af43d7a38d97fdecc89eae0bf89fdfvboxsync * files (the "Software"), to deal in the Software without
0f0fa99ce6af43d7a38d97fdecc89eae0bf89fdfvboxsync * restriction, including without limitation the rights to use,
0f0fa99ce6af43d7a38d97fdecc89eae0bf89fdfvboxsync * copy, modify, merge, publish, distribute, sublicense, and/or sell
0f0fa99ce6af43d7a38d97fdecc89eae0bf89fdfvboxsync * copies of the Software, and to permit persons to whom the
0f0fa99ce6af43d7a38d97fdecc89eae0bf89fdfvboxsync * Software is furnished to do so, subject to the following
0f0fa99ce6af43d7a38d97fdecc89eae0bf89fdfvboxsync * conditions:
0f0fa99ce6af43d7a38d97fdecc89eae0bf89fdfvboxsync * The above copyright notice and this permission notice shall be
0f0fa99ce6af43d7a38d97fdecc89eae0bf89fdfvboxsync * included in all copies or substantial portions of the Software.
0f0fa99ce6af43d7a38d97fdecc89eae0bf89fdfvboxsync * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
0f0fa99ce6af43d7a38d97fdecc89eae0bf89fdfvboxsync * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
0f0fa99ce6af43d7a38d97fdecc89eae0bf89fdfvboxsync * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
0f0fa99ce6af43d7a38d97fdecc89eae0bf89fdfvboxsync * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
0f0fa99ce6af43d7a38d97fdecc89eae0bf89fdfvboxsync * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
0f0fa99ce6af43d7a38d97fdecc89eae0bf89fdfvboxsync * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
0f0fa99ce6af43d7a38d97fdecc89eae0bf89fdfvboxsync * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
0f0fa99ce6af43d7a38d97fdecc89eae0bf89fdfvboxsync * OTHER DEALINGS IN THE SOFTWARE.
0f0fa99ce6af43d7a38d97fdecc89eae0bf89fdfvboxsync/*******************************************************************************
0f0fa99ce6af43d7a38d97fdecc89eae0bf89fdfvboxsync* Header Files *
0f0fa99ce6af43d7a38d97fdecc89eae0bf89fdfvboxsync*******************************************************************************/
0f0fa99ce6af43d7a38d97fdecc89eae0bf89fdfvboxsync/*******************************************************************************
0f0fa99ce6af43d7a38d97fdecc89eae0bf89fdfvboxsync* Global Variables *
0f0fa99ce6af43d7a38d97fdecc89eae0bf89fdfvboxsync*******************************************************************************/
0f0fa99ce6af43d7a38d97fdecc89eae0bf89fdfvboxsync/* from VBoxSFA.asm */
0f0fa99ce6af43d7a38d97fdecc89eae0bf89fdfvboxsync/* from sys0.asm and the linker/end.lib. */
0f0fa99ce6af43d7a38d97fdecc89eae0bf89fdfvboxsync * 32-bit Ring-0 init routine.
0f0fa99ce6af43d7a38d97fdecc89eae0bf89fdfvboxsync * This is called the first time somebody tries to use the IFS.
0f0fa99ce6af43d7a38d97fdecc89eae0bf89fdfvboxsync * It will initialize IPRT, Vbgl and whatever else is required.
0f0fa99ce6af43d7a38d97fdecc89eae0bf89fdfvboxsync * The caller will do the necessary AttachDD and calling of the 16 bit
0f0fa99ce6af43d7a38d97fdecc89eae0bf89fdfvboxsync * IDC to initialize the g_VBoxGuestIDC global. Perhaps we should move
0f0fa99ce6af43d7a38d97fdecc89eae0bf89fdfvboxsync * this bit to VbglInit? It's just that it's so much simpler to do it
0f0fa99ce6af43d7a38d97fdecc89eae0bf89fdfvboxsync * while we're on the way here...
0f0fa99ce6af43d7a38d97fdecc89eae0bf89fdfvboxsync Log(("VBoxSFR0Init: g_fpfnDevHlp=%lx u32Version=%RX32 u32Session=%RX32 pfnServiceEP=%p g_u32Info=%u (%#x)\n",
0f0fa99ce6af43d7a38d97fdecc89eae0bf89fdfvboxsync g_fpfnDevHlp, g_VBoxGuestIDC.u32Version, g_VBoxGuestIDC.u32Session, g_VBoxGuestIDC.pfnServiceEP, g_u32Info, g_u32Info));
0f0fa99ce6af43d7a38d97fdecc89eae0bf89fdfvboxsync * Start by initializing IPRT.
0f0fa99ce6af43d7a38d97fdecc89eae0bf89fdfvboxsync * Lock the 32-bit segments in memory.
0f0fa99ce6af43d7a38d97fdecc89eae0bf89fdfvboxsync AssertMsg(rc == NO_ERROR, ("locking text32 failed, rc=%d\n"));
0f0fa99ce6af43d7a38d97fdecc89eae0bf89fdfvboxsync AssertMsg(rc == NO_ERROR, ("locking text32 failed, rc=%d\n"));
0f0fa99ce6af43d7a38d97fdecc89eae0bf89fdfvboxsync LogRel(("VBoxSF: RTR0Init failed, rc=%Rrc\n", rc));
0f0fa99ce6af43d7a38d97fdecc89eae0bf89fdfvboxsync LogRel(("VBoxSF: Failed to connect to VBoxGuest.sys.\n"));