svchlp.h revision c1367e053933211e2e4869cf3d5e5e7c0620fdd8
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync/** @file
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync *
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync * Declaration of SVC Helper Process control routines.
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync */
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync/*
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync * Copyright (C) 2006-2007 Sun Microsystems, Inc.
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync *
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync * available from http://www.virtualbox.org. This file is free software;
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync * you can redistribute it and/or modify it under the terms of the GNU
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync * General Public License (GPL) as published by the Free Software
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync *
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync * Clara, CA 95054 USA or visit http://www.sun.com if you need
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync * additional information or have any questions.
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync */
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync#ifndef __VBox_svchlp_h__
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync#define __VBox_svchlp_h__
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync#include "VBox/com/string.h"
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync#include "VBox/com/guid.h"
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync#include <VBox/err.h>
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync#include <windows.h>
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsyncstruct SVCHlpMsg
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync{
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync enum Code
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync {
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync Null = 0, /* no parameters */
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync OK, /* no parameters */
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync Error, /* Utf8Str string (may be null but must present) */
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync CreateHostOnlyNetworkInterface = 100, /* see usage in code */
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync CreateHostOnlyNetworkInterface_OK, /* see usage in code */
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync RemoveHostOnlyNetworkInterface, /* see usage in code */
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync EnableDynamicIpConfig, /* see usage in code */
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync EnableStaticIpConfig, /* see usage in code */
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync EnableStaticIpConfigV6, /* see usage in code */
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync };
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync};
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsyncclass SVCHlpClient
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync{
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsyncpublic:
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync SVCHlpClient();
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync virtual ~SVCHlpClient();
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync int create (const char *aName);
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync int connect();
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync int open (const char *aName);
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync int close();
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync bool isOpen() const { return mIsOpen; }
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync bool isServer() const { return mIsServer; }
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync const com::Utf8Str &name() const { return mName; }
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync int write (const void *aVal, size_t aLen);
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync template <typename Scalar>
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync int write (Scalar aVal) { return write (&aVal, sizeof (aVal)); }
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync int write (const com::Utf8Str &aVal);
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync int write (const com::Guid &aGuid);
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync int read (void *aVal, size_t aLen);
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync template <typename Scalar>
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync int read (Scalar &aVal) { return read (&aVal, sizeof (aVal)); }
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync int read (com::Utf8Str &aVal);
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync int read (com::Guid &aGuid);
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsyncprivate:
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync bool mIsOpen : 1;
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync bool mIsServer : 1;
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync HANDLE mReadEnd;
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync HANDLE mWriteEnd;
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync com::Utf8Str mName;
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync};
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsyncclass SVCHlpServer : public SVCHlpClient
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync{
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsyncpublic:
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync SVCHlpServer();
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync int run();
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync};
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync#endif /* __VBox_svchlp_h__ */
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync
3cc33d1e7558a0f4a04b59bfe914a24d0b9a2329vboxsync