SysHlp.h revision 44dc5c86673574b949626732d11c1e5da0471326
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync/** @file
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync *
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync * VBoxGuestLib - A support library for VirtualBox guest additions:
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync * System dependent helpers internal header
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync */
4bc1bbf45f30ff3ca38c2ad006836e490972c7ccvboxsync
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync/*
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync * Copyright (C) 2006 InnoTek Systemberatung GmbH
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync *
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync * available from http://www.virtualbox.org. This file is free software;
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync * you can redistribute it and/or modify it under the terms of the GNU
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync * General Public License as published by the Free Software Foundation,
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync * in version 2 as it comes in the "COPYING" file of the VirtualBox OSE
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync * distribution. VirtualBox OSE is distributed in the hope that it will
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync * be useful, but WITHOUT ANY WARRANTY of any kind.
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync *
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync * If you received this file as part of a commercial VirtualBox
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync * distribution, then only the terms of your commercial VirtualBox
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync * license agreement apply instead of the previous paragraph.
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync */
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync#ifndef __SYSHLP__H
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync#define __SYSHLP__H
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync
88350256a6c78b8631aba5aa5ce249d90a8514a2vboxsync#ifdef __WIN__
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync# if (_MSC_VER >= 1400) && !defined(VBOX_WITH_PATCHED_DDK)
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync# include <iprt/asm.h>
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync# define _InterlockedExchange _InterlockedExchange_StupidDDKVsCompilerCrap
943d182735b76ecae26ea011cb7b87e449aafea8vboxsync# define _InterlockedExchangeAdd _InterlockedExchangeAdd_StupidDDKVsCompilerCrap
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync# define _InterlockedCompareExchange _InterlockedCompareExchange_StupidDDKVsCompilerCrap
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync# define _InterlockedAddLargeStatistic _InterlockedAddLargeStatistic_StupidDDKVsCompilerCrap
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync__BEGIN_DECLS
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync# include <ntddk.h>
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync__END_DECLS
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync# undef _InterlockedExchange
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync# undef _InterlockedExchangeAdd
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync# undef _InterlockedCompareExchange
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync# undef _InterlockedAddLargeStatistic
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync# else
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync__BEGIN_DECLS
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync# include <ntddk.h>
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync__END_DECLS
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync# endif
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync/* XP DDK #defines ExFreePool to ExFreePoolWithTag. The latter does not exist on NT4, so... */
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync#undef ExFreePool
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync#endif
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsynctypedef struct _VBGLDRIVER
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync{
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync#ifdef __WIN__
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync PDEVICE_OBJECT pDeviceObject;
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync PFILE_OBJECT pFileObject;
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync#else /* !__WIN__ */
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync void *opaque;
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync#endif /* !__WIN__ */
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync} VBGLDRIVER;
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync#ifndef VBGL_VBOXGUEST
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync/**
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync * Open VBoxGuest driver.
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync *
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync * @param pDriver Pointer to the driver structure.
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync *
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync * @return VBox error code
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync */
c6adb272ec43d5eaadb1493cb2bf45f2f8adf588vboxsyncint vbglDriverOpen (VBGLDRIVER *pDriver);
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync/**
58b7773f17a933ab8d53f450bed0afcf2f003508vboxsync * Call VBoxGuest driver.
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync *
c48c4d769ded37e2496f97dddbbd36dc62f244b1vboxsync * @param pDriver Pointer to the driver structure.
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync * @param u32Function Function code.
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync * @param pvData Pointer to supplied in/out data buffer.
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync * @param cbData Size of data buffer.
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync *
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync * @return VBox error code
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync */
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsyncint vbglDriverIOCtl (VBGLDRIVER *pDriver, uint32_t u32Function, void *pvData, uint32_t cbData);
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync/**
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync * Close VBoxGuest driver.
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync *
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync * @param pDriver Pointer to the driver structure.
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync *
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync * @return VBox error code
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync */
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsyncvoid vbglDriverClose (VBGLDRIVER *pDriver);
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync#endif
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync#endif /* __SYSHLP__H */
5f9dfb422a6ed57822f9c0cb94fa7df8d24acc9bvboxsync