tstSessionHack.cpp revision 52f16f53a955f5b24bc2132c418a5fffb700f089
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/* $Id$ */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/** @file
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * tstSessionHack
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/*
1c94c0a63ba68be1a7b2c640e70d7a06464e4fcavboxsync * Copyright (C) 2006-2007 Sun Microsystems, Inc.
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync *
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * available from http://www.virtualbox.org. This file is free software;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * you can redistribute it and/or modify it under the terms of the GNU
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync * General Public License (GPL) as published by the Free Software
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
1c94c0a63ba68be1a7b2c640e70d7a06464e4fcavboxsync *
1c94c0a63ba68be1a7b2c640e70d7a06464e4fcavboxsync * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
1c94c0a63ba68be1a7b2c640e70d7a06464e4fcavboxsync * Clara, CA 95054 USA or visit http://www.sun.com if you need
1c94c0a63ba68be1a7b2c640e70d7a06464e4fcavboxsync * additional information or have any questions.
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#define _WIN32_WINNT 0x0500
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#include <Windows.h>
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#include <VBox/VBoxGuest.h>
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#include <VBoxGuestInternal.h>
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#include <iprt/assert.h>
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#include <stdio.h>
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsyncvoid main(int argc, char *argv[])
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync{
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync DWORD cbReturned;
7e960d3a0a8a3a84d7aba2cca45d72b1c31cc97bvboxsync DWORD status = NO_ERROR;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync HANDLE gVBoxDriver;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync /* open VBox guest driver */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync gVBoxDriver = CreateFile(VBOXGUEST_DEVICE_NAME,
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync GENERIC_READ | GENERIC_WRITE,
61fa69e2bc9fc9e7490feed1c020273f3ddb238dvboxsync FILE_SHARE_READ | FILE_SHARE_WRITE,
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync NULL,
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync OPEN_EXISTING,
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED,
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync NULL);
b74ca013e5f201a2dd371e6c438433ceac12af30vboxsync if (gVBoxDriver == INVALID_HANDLE_VALUE)
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync {
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync printf("Could not open VBox Guest Additions driver! rc = %d\n", GetLastError());
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync return;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync }
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync if (argc == 1)
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync printf("Installing session hack\n");
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync else
223cf005b18af2c21352a70693ebaf0582f68ebcvboxsync printf("Removing session hack\n");
223cf005b18af2c21352a70693ebaf0582f68ebcvboxsync
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync if (!DeviceIoControl (gVBoxDriver, (argc == 1) ? VBOXGUEST_IOCTL_ENABLE_VRDP_SESSION : VBOXGUEST_IOCTL_DISABLE_VRDP_SESSION, NULL, 0, NULL, 0, &cbReturned, NULL))
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync {
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync printf("VBoxRestoreThread: DeviceIOControl(CtlMask) failed, SeamlessChangeThread exited\n");
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync }
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync CloseHandle(gVBoxDriver);
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync}
afed5ab737f4aacfae3fe73776f40e989190a7cavboxsync
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync