提交 41e097e9 编写于 作者: P Pritesh Kothari 提交者: Daniel Veillard

Add support for VBox 3 and event callbacks on vbox

* src/vbox/vbox_driver.c: remove some old 2.5 switches and plug the
  3.0 driver
* src/vbox/vbox_V3_0.c src/vbox/vbox_CAPI_v3_0.h: the driver for
  VirtualBox 3.0
* src/vbox/vbox_tmpl.c: handle the new driver and add event support
* src/Makefile.am: plug in the new module
上级 1112330e
...@@ -140,7 +140,8 @@ OPENVZ_DRIVER_SOURCES = \ ...@@ -140,7 +140,8 @@ OPENVZ_DRIVER_SOURCES = \
VBOX_DRIVER_SOURCES = \ VBOX_DRIVER_SOURCES = \
vbox/vbox_XPCOMCGlue.c vbox/vbox_XPCOMCGlue.h \ vbox/vbox_XPCOMCGlue.c vbox/vbox_XPCOMCGlue.h \
vbox/vbox_driver.c vbox/vbox_driver.h \ vbox/vbox_driver.c vbox/vbox_driver.h \
vbox/vbox_V2_2.c vbox/vbox_CAPI_v2_2.h vbox/vbox_V2_2.c vbox/vbox_CAPI_v2_2.h \
vbox/vbox_V3_0.c vbox/vbox_CAPI_v3_0.h
VBOX_DRIVER_EXTRA_DIST = vbox/vbox_tmpl.c vbox/README VBOX_DRIVER_EXTRA_DIST = vbox/vbox_tmpl.c vbox/README
......
/*
* DO NOT EDIT! This is a generated file.
*
* XPCOM IDL (XPIDL) definition for VirtualBox Main API (COM interfaces)
* generated from XIDL (XML interface definition).
*
* Source : src/VBox/Main/idl/VirtualBox.xidl
* Generator : src/VBox/Main/idl/xpcidl.xsl
*
* This file contains portions from the following Mozilla XPCOM files:
* xpcom/include/xpcom/nsID.h
* xpcom/include/nsIException.h
* xpcom/include/nsprpub/prtypes.h
* xpcom/include/xpcom/nsISupportsBase.h
*
* These files were originally triple-licensed (MPL/GPL2/LGPL2.1). Sun
* elects to distribute this derived work under the LGPL2.1 only.
*/
/*
* Copyright (C) 2008-2009 Sun Microsystems, Inc.
*
* This file is part of a free software library; you can redistribute
* it and/or modify it under the terms of the GNU Lesser General
* Public License version 2.1 as published by the Free Software
* Foundation and shipped in the "COPYING" file with this library.
* The library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY of any kind.
*
* Sun LGPL Disclaimer: For the avoidance of doubt, except that if
* any license choice other than GPL or LGPL is available it will
* apply instead, Sun elects to use only the Lesser General Public
* License version 2.1 (LGPLv2) at this time for any software where
* a choice of LGPL license versions is made available with the
* language indicating that LGPLv2 or any later version may be used,
* or where a choice of which version of the LGPL is applied is
* otherwise unspecified.
*
* Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
* Clara, CA 95054 USA or visit http://www.sun.com if you need
* additional information or have any questions.
*/
#ifndef ___VirtualBox_CXPCOM_h
#define ___VirtualBox_CXPCOM_h
#ifdef __cplusplus
# include "VirtualBox_XPCOM.h"
#else /* !__cplusplus */
#include <stddef.h>
#include "wchar.h"
#if defined(WIN32)
#define PR_EXPORT(__type) extern __declspec(dllexport) __type
#define PR_EXPORT_DATA(__type) extern __declspec(dllexport) __type
#define PR_IMPORT(__type) __declspec(dllimport) __type
#define PR_IMPORT_DATA(__type) __declspec(dllimport) __type
#define PR_EXTERN(__type) extern __declspec(dllexport) __type
#define PR_IMPLEMENT(__type) __declspec(dllexport) __type
#define PR_EXTERN_DATA(__type) extern __declspec(dllexport) __type
#define PR_IMPLEMENT_DATA(__type) __declspec(dllexport) __type
#define PR_CALLBACK
#define PR_CALLBACK_DECL
#define PR_STATIC_CALLBACK(__x) static __x
#elif defined(XP_BEOS)
#define PR_EXPORT(__type) extern __declspec(dllexport) __type
#define PR_EXPORT_DATA(__type) extern __declspec(dllexport) __type
#define PR_IMPORT(__type) extern __declspec(dllexport) __type
#define PR_IMPORT_DATA(__type) extern __declspec(dllexport) __type
#define PR_EXTERN(__type) extern __declspec(dllexport) __type
#define PR_IMPLEMENT(__type) __declspec(dllexport) __type
#define PR_EXTERN_DATA(__type) extern __declspec(dllexport) __type
#define PR_IMPLEMENT_DATA(__type) __declspec(dllexport) __type
#define PR_CALLBACK
#define PR_CALLBACK_DECL
#define PR_STATIC_CALLBACK(__x) static __x
#elif defined(WIN16)
#define PR_CALLBACK_DECL __cdecl
#if defined(_WINDLL)
#define PR_EXPORT(__type) extern __type _cdecl _export _loadds
#define PR_IMPORT(__type) extern __type _cdecl _export _loadds
#define PR_EXPORT_DATA(__type) extern __type _export
#define PR_IMPORT_DATA(__type) extern __type _export
#define PR_EXTERN(__type) extern __type _cdecl _export _loadds
#define PR_IMPLEMENT(__type) __type _cdecl _export _loadds
#define PR_EXTERN_DATA(__type) extern __type _export
#define PR_IMPLEMENT_DATA(__type) __type _export
#define PR_CALLBACK __cdecl __loadds
#define PR_STATIC_CALLBACK(__x) static __x PR_CALLBACK
#else /* this must be .EXE */
#define PR_EXPORT(__type) extern __type _cdecl _export
#define PR_IMPORT(__type) extern __type _cdecl _export
#define PR_EXPORT_DATA(__type) extern __type _export
#define PR_IMPORT_DATA(__type) extern __type _export
#define PR_EXTERN(__type) extern __type _cdecl _export
#define PR_IMPLEMENT(__type) __type _cdecl _export
#define PR_EXTERN_DATA(__type) extern __type _export
#define PR_IMPLEMENT_DATA(__type) __type _export
#define PR_CALLBACK __cdecl __loadds
#define PR_STATIC_CALLBACK(__x) __x PR_CALLBACK
#endif /* _WINDLL */
#elif defined(XP_MAC)
#define PR_EXPORT(__type) extern __declspec(export) __type
#define PR_EXPORT_DATA(__type) extern __declspec(export) __type
#define PR_IMPORT(__type) extern __declspec(export) __type
#define PR_IMPORT_DATA(__type) extern __declspec(export) __type
#define PR_EXTERN(__type) extern __declspec(export) __type
#define PR_IMPLEMENT(__type) __declspec(export) __type
#define PR_EXTERN_DATA(__type) extern __declspec(export) __type
#define PR_IMPLEMENT_DATA(__type) __declspec(export) __type
#define PR_CALLBACK
#define PR_CALLBACK_DECL
#define PR_STATIC_CALLBACK(__x) static __x
#elif defined(XP_OS2) && defined(__declspec)
#define PR_EXPORT(__type) extern __declspec(dllexport) __type
#define PR_EXPORT_DATA(__type) extern __declspec(dllexport) __type
#define PR_IMPORT(__type) __declspec(dllimport) __type
#define PR_IMPORT_DATA(__type) __declspec(dllimport) __type
#define PR_EXTERN(__type) extern __declspec(dllexport) __type
#define PR_IMPLEMENT(__type) __declspec(dllexport) __type
#define PR_EXTERN_DATA(__type) extern __declspec(dllexport) __type
#define PR_IMPLEMENT_DATA(__type) __declspec(dllexport) __type
#define PR_CALLBACK
#define PR_CALLBACK_DECL
#define PR_STATIC_CALLBACK(__x) static __x
#elif defined(XP_OS2_VACPP)
#define PR_EXPORT(__type) extern __type
#define PR_EXPORT_DATA(__type) extern __type
#define PR_IMPORT(__type) extern __type
#define PR_IMPORT_DATA(__type) extern __type
#define PR_EXTERN(__type) extern __type
#define PR_IMPLEMENT(__type) __type
#define PR_EXTERN_DATA(__type) extern __type
#define PR_IMPLEMENT_DATA(__type) __type
#define PR_CALLBACK _Optlink
#define PR_CALLBACK_DECL
#define PR_STATIC_CALLBACK(__x) static __x PR_CALLBACK
#else /* Unix */
# ifdef VBOX_HAVE_VISIBILITY_HIDDEN
# define PR_EXPORT(__type) __attribute__((visibility("default"))) extern __type
# define PR_EXPORT_DATA(__type) __attribute__((visibility("default"))) extern __type
# define PR_IMPORT(__type) extern __type
# define PR_IMPORT_DATA(__type) extern __type
# define PR_EXTERN(__type) __attribute__((visibility("default"))) extern __type
# define PR_IMPLEMENT(__type) __attribute__((visibility("default"))) __type
# define PR_EXTERN_DATA(__type) __attribute__((visibility("default"))) extern __type
# define PR_IMPLEMENT_DATA(__type) __attribute__((visibility("default"))) __type
# define PR_CALLBACK
# define PR_CALLBACK_DECL
# define PR_STATIC_CALLBACK(__x) static __x
# else
# define PR_EXPORT(__type) extern __type
# define PR_EXPORT_DATA(__type) extern __type
# define PR_IMPORT(__type) extern __type
# define PR_IMPORT_DATA(__type) extern __type
# define PR_EXTERN(__type) extern __type
# define PR_IMPLEMENT(__type) __type
# define PR_EXTERN_DATA(__type) extern __type
# define PR_IMPLEMENT_DATA(__type) __type
# define PR_CALLBACK
# define PR_CALLBACK_DECL
# define PR_STATIC_CALLBACK(__x) static __x
# endif
#endif
#if defined(_NSPR_BUILD_)
#define NSPR_API(__type) PR_EXPORT(__type)
#define NSPR_DATA_API(__type) PR_EXPORT_DATA(__type)
#else
#define NSPR_API(__type) PR_IMPORT(__type)
#define NSPR_DATA_API(__type) PR_IMPORT_DATA(__type)
#endif
typedef unsigned char PRUint8;
#if (defined(HPUX) && defined(__cplusplus) \
&& !defined(__GNUC__) && __cplusplus < 199707L) \
|| (defined(SCO) && defined(__cplusplus) \
&& !defined(__GNUC__) && __cplusplus == 1L)
typedef char PRInt8;
#else
typedef signed char PRInt8;
#endif
#define PR_INT8_MAX 127
#define PR_INT8_MIN (-128)
#define PR_UINT8_MAX 255U
typedef unsigned short PRUint16;
typedef short PRInt16;
#define PR_INT16_MAX 32767
#define PR_INT16_MIN (-32768)
#define PR_UINT16_MAX 65535U
typedef unsigned int PRUint32;
typedef int PRInt32;
#define PR_INT32(x) x
#define PR_UINT32(x) x ## U
#define PR_INT32_MAX PR_INT32(2147483647)
#define PR_INT32_MIN (-PR_INT32_MAX - 1)
#define PR_UINT32_MAX PR_UINT32(4294967295)
typedef long PRInt64;
typedef unsigned long PRUint64;
typedef int PRIntn;
typedef unsigned int PRUintn;
typedef double PRFloat64;
typedef size_t PRSize;
typedef ptrdiff_t PRPtrdiff;
typedef unsigned long PRUptrdiff;
typedef PRIntn PRBool;
#define PR_TRUE 1
#define PR_FALSE 0
typedef PRUint8 PRPackedBool;
/*
** Status code used by some routines that have a single point of failure or
** special status return.
*/
typedef enum { PR_FAILURE = -1, PR_SUCCESS = 0 } PRStatus;
#ifndef __PRUNICHAR__
#define __PRUNICHAR__
#if defined(WIN32) || defined(XP_MAC)
typedef wchar_t PRUnichar;
#else
typedef PRUint16 PRUnichar;
#endif
#endif
typedef long PRWord;
typedef unsigned long PRUword;
#define nsnull 0
typedef PRUint32 nsresult;
#if defined(__GNUC__) && (__GNUC__ > 2)
#define NS_LIKELY(x) (__builtin_expect((x), 1))
#define NS_UNLIKELY(x) (__builtin_expect((x), 0))
#else
#define NS_LIKELY(x) (x)
#define NS_UNLIKELY(x) (x)
#endif
#define NS_FAILED(_nsresult) (NS_UNLIKELY((_nsresult) & 0x80000000))
#define NS_SUCCEEDED(_nsresult) (NS_LIKELY(!((_nsresult) & 0x80000000)))
#ifdef VBOX_WITH_XPCOM_NAMESPACE_CLEANUP
# define PR_IntervalNow VBoxNsprPR_IntervalNow
# define PR_TicksPerSecond VBoxNsprPR_TicksPerSecond
# define PR_SecondsToInterval VBoxNsprPR_SecondsToInterval
# define PR_MillisecondsToInterval VBoxNsprPR_MillisecondsToInterval
# define PR_MicrosecondsToInterval VBoxNsprPR_MicrosecondsToInterval
# define PR_IntervalToSeconds VBoxNsprPR_IntervalToSeconds
# define PR_IntervalToMilliseconds VBoxNsprPR_IntervalToMilliseconds
# define PR_IntervalToMicroseconds VBoxNsprPR_IntervalToMicroseconds
# define PR_EnterMonitor VBoxNsprPR_EnterMonitor
# define PR_ExitMonitor VBoxNsprPR_ExitMonitor
# define PR_Notify VBoxNsprPR_Notify
# define PR_NotifyAll VBoxNsprPR_NotifyAll
# define PR_Wait VBoxNsprPR_Wait
# define PR_NewMonitor VBoxNsprPR_NewMonitor
# define PR_DestroyMonitor VBoxNsprPR_DestroyMonitor
#endif /* VBOX_WITH_XPCOM_NAMESPACE_CLEANUP */
typedef PRUint32 PRIntervalTime;
#define PR_INTERVAL_MIN 1000UL
#define PR_INTERVAL_MAX 100000UL
#define PR_INTERVAL_NO_WAIT 0UL
#define PR_INTERVAL_NO_TIMEOUT 0xffffffffUL
NSPR_API(PRIntervalTime) PR_IntervalNow(void);
NSPR_API(PRUint32) PR_TicksPerSecond(void);
NSPR_API(PRIntervalTime) PR_SecondsToInterval(PRUint32 seconds);
NSPR_API(PRIntervalTime) PR_MillisecondsToInterval(PRUint32 milli);
NSPR_API(PRIntervalTime) PR_MicrosecondsToInterval(PRUint32 micro);
NSPR_API(PRUint32) PR_IntervalToSeconds(PRIntervalTime ticks);
NSPR_API(PRUint32) PR_IntervalToMilliseconds(PRIntervalTime ticks);
NSPR_API(PRUint32) PR_IntervalToMicroseconds(PRIntervalTime ticks);
typedef struct PRMonitor PRMonitor;
NSPR_API(PRMonitor*) PR_NewMonitor(void);
NSPR_API(void) PR_DestroyMonitor(PRMonitor *mon);
NSPR_API(void) PR_EnterMonitor(PRMonitor *mon);
NSPR_API(PRStatus) PR_ExitMonitor(PRMonitor *mon);
NSPR_API(PRStatus) PR_Wait(PRMonitor *mon, PRIntervalTime ticks);
NSPR_API(PRStatus) PR_Notify(PRMonitor *mon);
NSPR_API(PRStatus) PR_NotifyAll(PRMonitor *mon);
#ifdef VBOX_WITH_XPCOM_NAMESPACE_CLEANUP
# define PR_CreateThread VBoxNsprPR_CreateThread
# define PR_JoinThread VBoxNsprPR_JoinThread
# define PR_Sleep VBoxNsprPR_Sleep
# define PR_GetCurrentThread VBoxNsprPR_GetCurrentThread
# define PR_GetThreadState VBoxNsprPR_GetThreadState
# define PR_SetThreadPrivate VBoxNsprPR_SetThreadPrivate
# define PR_GetThreadPrivate VBoxNsprPR_GetThreadPrivate
# define PR_NewThreadPrivateIndex VBoxNsprPR_NewThreadPrivateIndex
# define PR_GetThreadPriority VBoxNsprPR_GetThreadPriority
# define PR_SetThreadPriority VBoxNsprPR_SetThreadPriority
# define PR_Interrupt VBoxNsprPR_Interrupt
# define PR_ClearInterrupt VBoxNsprPR_ClearInterrupt
# define PR_BlockInterrupt VBoxNsprPR_BlockInterrupt
# define PR_UnblockInterrupt VBoxNsprPR_UnblockInterrupt
# define PR_GetThreadScope VBoxNsprPR_GetThreadScope
# define PR_GetThreadType VBoxNsprPR_GetThreadType
#endif /* VBOX_WITH_XPCOM_NAMESPACE_CLEANUP */
typedef struct PRThread PRThread;
typedef struct PRThreadStack PRThreadStack;
typedef enum PRThreadType {
PR_USER_THREAD,
PR_SYSTEM_THREAD
} PRThreadType;
typedef enum PRThreadScope {
PR_LOCAL_THREAD,
PR_GLOBAL_THREAD,
PR_GLOBAL_BOUND_THREAD
} PRThreadScope;
typedef enum PRThreadState {
PR_JOINABLE_THREAD,
PR_UNJOINABLE_THREAD
} PRThreadState;
typedef enum PRThreadPriority
{
PR_PRIORITY_FIRST = 0, /* just a placeholder */
PR_PRIORITY_LOW = 0, /* the lowest possible priority */
PR_PRIORITY_NORMAL = 1, /* most common expected priority */
PR_PRIORITY_HIGH = 2, /* slightly more aggressive scheduling */
PR_PRIORITY_URGENT = 3, /* it does little good to have more than one */
PR_PRIORITY_LAST = 3 /* this is just a placeholder */
} PRThreadPriority;
NSPR_API(PRThread*) PR_CreateThread(PRThreadType type,
void (PR_CALLBACK *start)(void *arg),
void *arg,
PRThreadPriority priority,
PRThreadScope scope,
PRThreadState state,
PRUint32 stackSize);
NSPR_API(PRStatus) PR_JoinThread(PRThread *thread);
NSPR_API(PRThread*) PR_GetCurrentThread(void);
#ifndef NO_NSPR_10_SUPPORT
#define PR_CurrentThread() PR_GetCurrentThread() /* for nspr1.0 compat. */
#endif /* NO_NSPR_10_SUPPORT */
NSPR_API(PRThreadPriority) PR_GetThreadPriority(const PRThread *thread);
NSPR_API(void) PR_SetThreadPriority(PRThread *thread, PRThreadPriority priority);
typedef void (PR_CALLBACK *PRThreadPrivateDTOR)(void *priv);
NSPR_API(PRStatus) PR_NewThreadPrivateIndex(
PRUintn *newIndex, PRThreadPrivateDTOR destructor);
NSPR_API(PRStatus) PR_SetThreadPrivate(PRUintn tpdIndex, void *priv);
NSPR_API(void*) PR_GetThreadPrivate(PRUintn tpdIndex);
NSPR_API(PRStatus) PR_Interrupt(PRThread *thread);
NSPR_API(void) PR_ClearInterrupt(void);
NSPR_API(void) PR_BlockInterrupt(void);
NSPR_API(void) PR_UnblockInterrupt(void);
NSPR_API(PRStatus) PR_Sleep(PRIntervalTime ticks);
NSPR_API(PRThreadScope) PR_GetThreadScope(const PRThread *thread);
NSPR_API(PRThreadType) PR_GetThreadType(const PRThread *thread);
NSPR_API(PRThreadState) PR_GetThreadState(const PRThread *thread);
#ifdef VBOX_WITH_XPCOM_NAMESPACE_CLEANUP
# define PR_DestroyLock VBoxNsprPR_DestroyLock
# define PR_Lock VBoxNsprPR_Lock
# define PR_NewLock VBoxNsprPR_NewLock
# define PR_Unlock VBoxNsprPR_Unlock
#endif /* VBOX_WITH_XPCOM_NAMESPACE_CLEANUP */
typedef struct PRLock PRLock;
NSPR_API(PRLock*) PR_NewLock(void);
NSPR_API(void) PR_DestroyLock(PRLock *lock);
NSPR_API(void) PR_Lock(PRLock *lock);
NSPR_API(PRStatus) PR_Unlock(PRLock *lock);
#ifdef VBOX_WITH_XPCOM_NAMESPACE_CLEANUP
# define PR_NewCondVar VBoxNsprPR_NewCondVar
# define PR_DestroyCondVar VBoxNsprPR_DestroyCondVar
# define PR_WaitCondVar VBoxNsprPR_WaitCondVar
# define PR_NotifyCondVar VBoxNsprPR_NotifyCondVar
# define PR_NotifyAllCondVar VBoxNsprPR_NotifyAllCondVar
#endif /* VBOX_WITH_XPCOM_NAMESPACE_CLEANUP */
typedef struct PRCondVar PRCondVar;
NSPR_API(PRCondVar*) PR_NewCondVar(PRLock *lock);
NSPR_API(void) PR_DestroyCondVar(PRCondVar *cvar);
NSPR_API(PRStatus) PR_WaitCondVar(PRCondVar *cvar, PRIntervalTime timeout);
NSPR_API(PRStatus) PR_NotifyCondVar(PRCondVar *cvar);
NSPR_API(PRStatus) PR_NotifyAllCondVar(PRCondVar *cvar);
typedef struct PRCListStr PRCList;
struct PRCListStr {
PRCList *next;
PRCList *prev;
};
#ifdef VBOX_WITH_XPCOM_NAMESPACE_CLEANUP
# define PL_DestroyEvent VBoxNsplPL_DestroyEvent
# define PL_HandleEvent VBoxNsplPL_HandleEvent
# define PL_InitEvent VBoxNsplPL_InitEvent
# define PL_CreateEventQueue VBoxNsplPL_CreateEventQueue
# define PL_CreateMonitoredEventQueue VBoxNsplPL_CreateMonitoredEventQueue
# define PL_CreateNativeEventQueue VBoxNsplPL_CreateNativeEventQueue
# define PL_DequeueEvent VBoxNsplPL_DequeueEvent
# define PL_DestroyEventQueue VBoxNsplPL_DestroyEventQueue
# define PL_EventAvailable VBoxNsplPL_EventAvailable
# define PL_EventLoop VBoxNsplPL_EventLoop
# define PL_GetEvent VBoxNsplPL_GetEvent
# define PL_GetEventOwner VBoxNsplPL_GetEventOwner
# define PL_GetEventQueueMonitor VBoxNsplPL_GetEventQueueMonitor
# define PL_GetEventQueueSelectFD VBoxNsplPL_GetEventQueueSelectFD
# define PL_MapEvents VBoxNsplPL_MapEvents
# define PL_PostEvent VBoxNsplPL_PostEvent
# define PL_PostSynchronousEvent VBoxNsplPL_PostSynchronousEvent
# define PL_ProcessEventsBeforeID VBoxNsplPL_ProcessEventsBeforeID
# define PL_ProcessPendingEvents VBoxNsplPL_ProcessPendingEvents
# define PL_RegisterEventIDFunc VBoxNsplPL_RegisterEventIDFunc
# define PL_RevokeEvents VBoxNsplPL_RevokeEvents
# define PL_UnregisterEventIDFunc VBoxNsplPL_UnregisterEventIDFunc
# define PL_WaitForEvent VBoxNsplPL_WaitForEvent
# define PL_IsQueueNative VBoxNsplPL_IsQueueNative
# define PL_IsQueueOnCurrentThread VBoxNsplPL_IsQueueOnCurrentThread
# define PL_FavorPerformanceHint VBoxNsplPL_FavorPerformanceHint
#endif /* VBOX_WITH_XPCOM_NAMESPACE_CLEANUP */
typedef struct PLEvent PLEvent;
typedef struct PLEventQueue PLEventQueue;
PR_EXTERN(PLEventQueue*)
PL_CreateEventQueue(const char* name, PRThread* handlerThread);
PR_EXTERN(PLEventQueue *)
PL_CreateNativeEventQueue(
const char *name,
PRThread *handlerThread
);
PR_EXTERN(PLEventQueue *)
PL_CreateMonitoredEventQueue(
const char *name,
PRThread *handlerThread
);
PR_EXTERN(void)
PL_DestroyEventQueue(PLEventQueue* self);
PR_EXTERN(PRMonitor*)
PL_GetEventQueueMonitor(PLEventQueue* self);
#define PL_ENTER_EVENT_QUEUE_MONITOR(queue) \
PR_EnterMonitor(PL_GetEventQueueMonitor(queue))
#define PL_EXIT_EVENT_QUEUE_MONITOR(queue) \
PR_ExitMonitor(PL_GetEventQueueMonitor(queue))
PR_EXTERN(PRStatus) PL_PostEvent(PLEventQueue* self, PLEvent* event);
PR_EXTERN(void*) PL_PostSynchronousEvent(PLEventQueue* self, PLEvent* event);
PR_EXTERN(PLEvent*) PL_GetEvent(PLEventQueue* self);
PR_EXTERN(PRBool) PL_EventAvailable(PLEventQueue* self);
typedef void (PR_CALLBACK *PLEventFunProc)(PLEvent* event, void* data, PLEventQueue* queue);
PR_EXTERN(void) PL_MapEvents(PLEventQueue* self, PLEventFunProc fun, void* data);
PR_EXTERN(void) PL_RevokeEvents(PLEventQueue* self, void* owner);
PR_EXTERN(void) PL_ProcessPendingEvents(PLEventQueue* self);
PR_EXTERN(PLEvent*) PL_WaitForEvent(PLEventQueue* self);
PR_EXTERN(void) PL_EventLoop(PLEventQueue* self);
PR_EXTERN(PRInt32) PL_GetEventQueueSelectFD(PLEventQueue* self);
PR_EXTERN(PRBool) PL_IsQueueOnCurrentThread( PLEventQueue *queue );
PR_EXTERN(PRBool) PL_IsQueueNative(PLEventQueue *queue);
typedef void* (PR_CALLBACK *PLHandleEventProc)(PLEvent* self);
typedef void (PR_CALLBACK *PLDestroyEventProc)(PLEvent* self);
PR_EXTERN(void)
PL_InitEvent(PLEvent* self, void* owner,
PLHandleEventProc handler,
PLDestroyEventProc destructor);
PR_EXTERN(void*) PL_GetEventOwner(PLEvent* self);
PR_EXTERN(void) PL_HandleEvent(PLEvent* self);
PR_EXTERN(void) PL_DestroyEvent(PLEvent* self);
PR_EXTERN(void) PL_DequeueEvent(PLEvent* self, PLEventQueue* queue);
PR_EXTERN(void) PL_FavorPerformanceHint(PRBool favorPerformanceOverEventStarvation, PRUint32 starvationDelay);
struct PLEvent {
PRCList link;
PLHandleEventProc handler;
PLDestroyEventProc destructor;
void* owner;
void* synchronousResult;
PRLock* lock;
PRCondVar* condVar;
PRBool handled;
#ifdef PL_POST_TIMINGS
PRIntervalTime postTime;
#endif
#ifdef XP_UNIX
unsigned long id;
#endif /* XP_UNIX */
/* other fields follow... */
};
#if defined(XP_WIN) || defined(XP_OS2)
PR_EXTERN(HWND)
PL_GetNativeEventReceiverWindow(
PLEventQueue *eqp
);
#endif /* XP_WIN || XP_OS2 */
#ifdef XP_UNIX
PR_EXTERN(PRInt32)
PL_ProcessEventsBeforeID(PLEventQueue *aSelf, unsigned long aID);
typedef unsigned long (PR_CALLBACK *PLGetEventIDFunc)(void *aClosure);
PR_EXTERN(void)
PL_RegisterEventIDFunc(PLEventQueue *aSelf, PLGetEventIDFunc aFunc,
void *aClosure);
PR_EXTERN(void) PL_UnregisterEventIDFunc(PLEventQueue *aSelf);
#endif /* XP_UNIX */
/* Standard "it worked" return value */
#define NS_OK 0
#define NS_ERROR_BASE ((nsresult) 0xC1F30000)
/* Returned when an instance is not initialized */
#define NS_ERROR_NOT_INITIALIZED (NS_ERROR_BASE + 1)
/* Returned when an instance is already initialized */
#define NS_ERROR_ALREADY_INITIALIZED (NS_ERROR_BASE + 2)
/* Returned by a not implemented function */
#define NS_ERROR_NOT_IMPLEMENTED ((nsresult) 0x80004001L)
/* Returned when a given interface is not supported. */
#define NS_NOINTERFACE ((nsresult) 0x80004002L)
#define NS_ERROR_NO_INTERFACE NS_NOINTERFACE
#define NS_ERROR_INVALID_POINTER ((nsresult) 0x80004003L)
#define NS_ERROR_NULL_POINTER NS_ERROR_INVALID_POINTER
/* Returned when a function aborts */
#define NS_ERROR_ABORT ((nsresult) 0x80004004L)
/* Returned when a function fails */
#define NS_ERROR_FAILURE ((nsresult) 0x80004005L)
/* Returned when an unexpected error occurs */
#define NS_ERROR_UNEXPECTED ((nsresult) 0x8000ffffL)
/* Returned when a memory allocation fails */
#define NS_ERROR_OUT_OF_MEMORY ((nsresult) 0x8007000eL)
/* Returned when an illegal value is passed */
#define NS_ERROR_ILLEGAL_VALUE ((nsresult) 0x80070057L)
#define NS_ERROR_INVALID_ARG NS_ERROR_ILLEGAL_VALUE
/* Returned when a class doesn't allow aggregation */
#define NS_ERROR_NO_AGGREGATION ((nsresult) 0x80040110L)
/* Returned when an operation can't complete due to an unavailable resource */
#define NS_ERROR_NOT_AVAILABLE ((nsresult) 0x80040111L)
/* Returned when a class is not registered */
#define NS_ERROR_FACTORY_NOT_REGISTERED ((nsresult) 0x80040154L)
/* Returned when a class cannot be registered, but may be tried again later */
#define NS_ERROR_FACTORY_REGISTER_AGAIN ((nsresult) 0x80040155L)
/* Returned when a dynamically loaded factory couldn't be found */
#define NS_ERROR_FACTORY_NOT_LOADED ((nsresult) 0x800401f8L)
/* Returned when a factory doesn't support signatures */
#define NS_ERROR_FACTORY_NO_SIGNATURE_SUPPORT \
(NS_ERROR_BASE + 0x101)
/* Returned when a factory already is registered */
#define NS_ERROR_FACTORY_EXISTS (NS_ERROR_BASE + 0x100)
/**
* An "interface id" which can be used to uniquely identify a given
* interface.
* A "unique identifier". This is modeled after OSF DCE UUIDs.
*/
struct nsID {
PRUint32 m0;
PRUint16 m1;
PRUint16 m2;
PRUint8 m3[8];
};
typedef struct nsID nsID;
typedef nsID nsIID;
struct nsISupports; /* forward declaration */
struct nsIStackFrame; /* forward declaration */
struct nsIException; /* forward declaration */
typedef struct nsISupports nsISupports; /* forward declaration */
typedef struct nsIStackFrame nsIStackFrame; /* forward declaration */
typedef struct nsIException nsIException; /* forward declaration */
/**
* IID for the nsISupports interface
* {00000000-0000-0000-c000-000000000046}
*
* To maintain binary compatibility with COM's IUnknown, we define the IID
* of nsISupports to be the same as that of COM's IUnknown.
*/
#define NS_ISUPPORTS_IID \
{ 0x00000000, 0x0000, 0x0000, \
{0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46} }
/**
* Reference count values
*
* This is the return type for AddRef() and Release() in nsISupports.
* IUnknown of COM returns an unsigned long from equivalent functions.
* The following ifdef exists to maintain binary compatibility with
* IUnknown.
*/
/**
* Basic component object model interface. Objects which implement
* this interface support runtime interface discovery (QueryInterface)
* and a reference counted memory model (AddRef/Release). This is
* modelled after the win32 IUnknown API.
*/
struct nsISupports_vtbl {
/**
* @name Methods
*/
/**
* A run time mechanism for interface discovery.
* @param aIID [in] A requested interface IID
* @param aInstancePtr [out] A pointer to an interface pointer to
* receive the result.
* @return NS_OK if the interface is supported by the associated
* instance, NS_NOINTERFACE if it is not.
* NS_ERROR_INVALID_POINTER if aInstancePtr is NULL.
*/
nsresult (*QueryInterface)(nsISupports *pThis, const nsID *iid, void **resultp);
/**
* Increases the reference count for this interface.
* The associated instance will not be deleted unless
* the reference count is returned to zero.
*
* @return The resulting reference count.
*/
nsresult (*AddRef)(nsISupports *pThis);
/**
* Decreases the reference count for this interface.
* Generally, if the reference count returns to zero,
* the associated instance is deleted.
*
* @return The resulting reference count.
*/
nsresult (*Release)(nsISupports *pThis);
};
struct nsISupports {
struct nsISupports_vtbl *vtbl;
};
/* starting interface: nsIException */
#define NS_IEXCEPTION_IID_STR "f3a8d3b4-c424-4edc-8bf6-8974c983ba78"
#define NS_IEXCEPTION_IID \
{0xf3a8d3b4, 0xc424, 0x4edc, \
{ 0x8b, 0xf6, 0x89, 0x74, 0xc9, 0x83, 0xba, 0x78 }}
struct nsIException_vtbl {
/* Methods from the Class nsISupports */
struct nsISupports_vtbl nsisupports;
/* readonly attribute string message; */
nsresult (*GetMessage)(nsIException *pThis, PRUnichar * *aMessage);
/* readonly attribute nsresult (*result; */
nsresult (*GetResult)(nsIException *pThis, nsresult *aResult);
/* readonly attribute string name; */
nsresult (*GetName)(nsIException *pThis, PRUnichar * *aName);
/* readonly attribute string filename; */
nsresult (*GetFilename)(nsIException *pThis, PRUnichar * *aFilename);
/* readonly attribute PRUint32 lineNumber; */
nsresult (*GetLineNumber)(nsIException *pThis, PRUint32 *aLineNumber);
/* readonly attribute PRUint32 columnNumber; */
nsresult (*GetColumnNumber)(nsIException *pThis, PRUint32 *aColumnNumber);
/* readonly attribute nsIStackFrame location; */
nsresult (*GetLocation)(nsIException *pThis, nsIStackFrame * *aLocation);
/* readonly attribute nsIException inner; */
nsresult (*GetInner)(nsIException *pThis, nsIException * *aInner);
/* readonly attribute nsISupports data; */
nsresult (*GetData)(nsIException *pThis, nsISupports * *aData);
/* string toString (); */
nsresult (*ToString)(nsIException *pThis, PRUnichar **_retval);
};
struct nsIException {
struct nsIException_vtbl *vtbl;
};
/* starting interface: nsIStackFrame */
#define NS_ISTACKFRAME_IID_STR "91d82105-7c62-4f8b-9779-154277c0ee90"
#define NS_ISTACKFRAME_IID \
{0x91d82105, 0x7c62, 0x4f8b, \
{ 0x97, 0x79, 0x15, 0x42, 0x77, 0xc0, 0xee, 0x90 }}
struct nsIStackFrame_vtbl {
/* Methods from the Class nsISupports */
struct nsISupports_vtbl nsisupports;
/* readonly attribute PRUint32 language; */
nsresult (*GetLanguage)(nsIStackFrame *pThis, PRUint32 *aLanguage);
/* readonly attribute string languageName; */
nsresult (*GetLanguageName)(nsIStackFrame *pThis, PRUnichar * *aLanguageName);
/* readonly attribute string filename; */
nsresult (*GetFilename)(nsIStackFrame *pThis, PRUnichar * *aFilename);
/* readonly attribute string name; */
nsresult (*GetName)(nsIStackFrame *pThis, PRUnichar * *aName);
/* readonly attribute PRInt32 lineNumber; */
nsresult (*GetLineNumber)(nsIStackFrame *pThis, PRInt32 *aLineNumber);
/* readonly attribute string sourceLine; */
nsresult (*GetSourceLine)(nsIStackFrame *pThis, PRUnichar * *aSourceLine);
/* readonly attribute nsIStackFrame caller; */
nsresult (*GetCaller)(nsIStackFrame *pThis, nsIStackFrame * *aCaller);
/* string toString (); */
nsresult (*ToString)(nsIStackFrame *pThis, PRUnichar **_retval);
};
struct nsIStackFrame {
struct nsIStackFrame_vtbl *vtbl;
};
/* starting interface: nsIEventTarget */
#define NS_IEVENTTARGET_IID_STR "ea99ad5b-cc67-4efb-97c9-2ef620a59f2a"
#define NS_IEVENTTARGET_IID \
{0xea99ad5b, 0xcc67, 0x4efb, \
{ 0x97, 0xc9, 0x2e, 0xf6, 0x20, 0xa5, 0x9f, 0x2a }}
struct nsIEventTarget;
typedef struct nsIEventTarget nsIEventTarget;
struct nsIEventTarget_vtbl {
struct nsISupports_vtbl nsisupports;
nsresult (*PostEvent)(nsIEventTarget *pThis, PLEvent * aEvent);
nsresult (*IsOnCurrentThread)(nsIEventTarget *pThis, PRBool *_retval);
};
struct nsIEventTarget {
struct nsIEventTarget_vtbl *vtbl;
};
/* starting interface: nsIEventQueue */
#define NS_IEVENTQUEUE_IID_STR "176afb41-00a4-11d3-9f2a-00400553eef0"
#define NS_IEVENTQUEUE_IID \
{0x176afb41, 0x00a4, 0x11d3, \
{ 0x9f, 0x2a, 0x00, 0x40, 0x05, 0x53, 0xee, 0xf0 }}
struct nsIEventQueue;
typedef struct nsIEventQueue nsIEventQueue;
struct nsIEventQueue_vtbl {
struct nsIEventTarget_vtbl nsieventtarget;
nsresult (*InitEvent)(nsIEventQueue *pThis, PLEvent * aEvent, void * owner, PLHandleEventProc handler, PLDestroyEventProc destructor);
nsresult (*PostSynchronousEvent)(nsIEventQueue *pThis, PLEvent * aEvent, void * *aResult);
nsresult (*PendingEvents)(nsIEventQueue *pThis, PRBool *_retval);
nsresult (*ProcessPendingEvents)(nsIEventQueue *pThis);
nsresult (*EventLoop)(nsIEventQueue *pThis);
nsresult (*EventAvailable)(nsIEventQueue *pThis, PRBool *aResult);
nsresult (*GetEvent)(nsIEventQueue *pThis, PLEvent * *_retval);
nsresult (*HandleEvent)(nsIEventQueue *pThis, PLEvent * aEvent);
nsresult (*WaitForEvent)(nsIEventQueue *pThis, PLEvent * *_retval);
PRInt32 (*GetEventQueueSelectFD)(nsIEventQueue *pThis);
nsresult (*Init)(nsIEventQueue *pThis, PRBool aNative);
nsresult (*InitFromPRThread)(nsIEventQueue *pThis, PRThread * thread, PRBool aNative);
nsresult (*InitFromPLQueue)(nsIEventQueue *pThis, PLEventQueue * aQueue);
nsresult (*EnterMonitor)(nsIEventQueue *pThis);
nsresult (*ExitMonitor)(nsIEventQueue *pThis);
nsresult (*RevokeEvents)(nsIEventQueue *pThis, void * owner);
nsresult (*GetPLEventQueue)(nsIEventQueue *pThis, PLEventQueue * *_retval);
nsresult (*IsQueueNative)(nsIEventQueue *pThis, PRBool *_retval);
nsresult (*StopAcceptingEvents)(nsIEventQueue *pThis);
};
struct nsIEventQueue {
struct nsIEventQueue_vtbl *vtbl;
};
#define VBOX_E_OBJECT_NOT_FOUND 0x80BB0001
#define VBOX_E_INVALID_VM_STATE 0x80BB0002
#define VBOX_E_VM_ERROR 0x80BB0003
#define VBOX_E_FILE_ERROR 0x80BB0004
#define VBOX_E_IPRT_ERROR 0x80BB0005
#define VBOX_E_PDM_ERROR 0x80BB0006
#define VBOX_E_INVALID_OBJECT_STATE 0x80BB0007
#define VBOX_E_HOST_ERROR 0x80BB0008
#define VBOX_E_NOT_SUPPORTED 0x80BB0009
#define VBOX_E_XML_ERROR 0x80BB000A
#define VBOX_E_INVALID_SESSION_STATE 0x80BB000B
#define VBOX_E_OBJECT_IN_USE 0x80BB000C
struct IVirtualBoxErrorInfo;
struct IVirtualBoxCallback;
struct IDHCPServer;
struct IVirtualBox;
struct IVFSExplorer;
struct IAppliance;
struct IVirtualSystemDescription;
struct IInternalMachineControl;
struct IBIOSSettings;
struct IMachine;
struct IConsoleCallback;
struct IRemoteDisplayInfo;
struct IConsole;
struct IHostDVDDrive;
struct IHostFloppyDrive;
struct IHostNetworkInterface;
struct IHost;
struct ISystemProperties;
struct IGuestOSType;
struct IGuest;
struct IProgress;
struct ISnapshot;
struct IMedium;
struct IHardDiskAttachment;
struct IHardDisk;
struct IHardDiskFormat;
struct IFloppyImage;
struct IDVDImage;
struct IDVDDrive;
struct IFloppyDrive;
struct IKeyboard;
struct IMouse;
struct IFramebuffer;
struct IFramebufferOverlay;
struct IDisplay;
struct INetworkAdapter;
struct ISerialPort;
struct IParallelPort;
struct IMachineDebugger;
struct IUSBController;
struct IUSBDevice;
struct IUSBDeviceFilter;
struct IHostUSBDevice;
struct IHostUSBDeviceFilter;
struct IAudioAdapter;
struct IVRDPServer;
struct ISharedFolder;
struct IInternalSessionControl;
struct ISession;
struct IStorageController;
struct IManagedObjectRef;
struct IWebsessionManager;
struct IPerformanceMetric;
struct IPerformanceCollector;
typedef struct IVirtualBoxErrorInfo IVirtualBoxErrorInfo;
typedef struct IVirtualBoxCallback IVirtualBoxCallback;
typedef struct IDHCPServer IDHCPServer;
typedef struct IVirtualBox IVirtualBox;
typedef struct IVFSExplorer IVFSExplorer;
typedef struct IAppliance IAppliance;
typedef struct IVirtualSystemDescription IVirtualSystemDescription;
typedef struct IInternalMachineControl IInternalMachineControl;
typedef struct IBIOSSettings IBIOSSettings;
typedef struct IMachine IMachine;
typedef struct IConsoleCallback IConsoleCallback;
typedef struct IRemoteDisplayInfo IRemoteDisplayInfo;
typedef struct IConsole IConsole;
typedef struct IHostDVDDrive IHostDVDDrive;
typedef struct IHostFloppyDrive IHostFloppyDrive;
typedef struct IHostNetworkInterface IHostNetworkInterface;
typedef struct IHost IHost;
typedef struct ISystemProperties ISystemProperties;
typedef struct IGuestOSType IGuestOSType;
typedef struct IGuest IGuest;
typedef struct IProgress IProgress;
typedef struct ISnapshot ISnapshot;
typedef struct IMedium IMedium;
typedef struct IHardDiskAttachment IHardDiskAttachment;
typedef struct IHardDisk IHardDisk;
typedef struct IHardDiskFormat IHardDiskFormat;
typedef struct IFloppyImage IFloppyImage;
typedef struct IDVDImage IDVDImage;
typedef struct IDVDDrive IDVDDrive;
typedef struct IFloppyDrive IFloppyDrive;
typedef struct IKeyboard IKeyboard;
typedef struct IMouse IMouse;
typedef struct IFramebuffer IFramebuffer;
typedef struct IFramebufferOverlay IFramebufferOverlay;
typedef struct IDisplay IDisplay;
typedef struct INetworkAdapter INetworkAdapter;
typedef struct ISerialPort ISerialPort;
typedef struct IParallelPort IParallelPort;
typedef struct IMachineDebugger IMachineDebugger;
typedef struct IUSBController IUSBController;
typedef struct IUSBDevice IUSBDevice;
typedef struct IUSBDeviceFilter IUSBDeviceFilter;
typedef struct IHostUSBDevice IHostUSBDevice;
typedef struct IHostUSBDeviceFilter IHostUSBDeviceFilter;
typedef struct IAudioAdapter IAudioAdapter;
typedef struct IVRDPServer IVRDPServer;
typedef struct ISharedFolder ISharedFolder;
typedef struct IInternalSessionControl IInternalSessionControl;
typedef struct ISession ISession;
typedef struct IStorageController IStorageController;
typedef struct IManagedObjectRef IManagedObjectRef;
typedef struct IWebsessionManager IWebsessionManager;
typedef struct IPerformanceMetric IPerformanceMetric;
typedef struct IPerformanceCollector IPerformanceCollector;
/* Start of enum AccessMode Declaration */
#define ACCESSMODE_IID_STR "1da0007c-ddf7-4be8-bcac-d84a1558785f"
#define ACCESSMODE_IID { \
0x1da0007c, 0xddf7, 0x4be8, \
{ 0xbc, 0xac, 0xd8, 0x4a, 0x15, 0x58, 0x78, 0x5f } \
}
enum AccessMode
{
AccessMode_ReadOnly = 1,
AccessMode_ReadWrite = 2
};
/* End of enum AccessMode Declaration */
/* Start of enum MachineState Declaration */
#define MACHINESTATE_IID_STR "73bf04d0-7c4f-4684-9abf-d65a9ad74343"
#define MACHINESTATE_IID { \
0x73bf04d0, 0x7c4f, 0x4684, \
{ 0x9a, 0xbf, 0xd6, 0x5a, 0x9a, 0xd7, 0x43, 0x43 } \
}
enum MachineState
{
MachineState_Null = 0,
MachineState_PoweredOff = 1,
MachineState_Saved = 2,
MachineState_Aborted = 3,
MachineState_Running = 4,
MachineState_Paused = 5,
MachineState_Stuck = 6,
MachineState_Starting = 7,
MachineState_Stopping = 8,
MachineState_Saving = 9,
MachineState_Restoring = 10,
MachineState_Discarding = 11,
MachineState_SettingUp = 12,
MachineState_FirstOnline = 4,
MachineState_LastOnline = 10,
MachineState_FirstTransient = 7,
MachineState_LastTransient = 12
};
/* End of enum MachineState Declaration */
/* Start of enum SessionState Declaration */
#define SESSIONSTATE_IID_STR "CF2700C0-EA4B-47ae-9725-7810114B94D8"
#define SESSIONSTATE_IID { \
0xCF2700C0, 0xEA4B, 0x47ae, \
{ 0x97, 0x25, 0x78, 0x10, 0x11, 0x4B, 0x94, 0xD8 } \
}
enum SessionState
{
SessionState_Null = 0,
SessionState_Closed = 1,
SessionState_Open = 2,
SessionState_Spawning = 3,
SessionState_Closing = 4
};
/* End of enum SessionState Declaration */
/* Start of enum SessionType Declaration */
#define SESSIONTYPE_IID_STR "A13C02CB-0C2C-421E-8317-AC0E8AAA153A"
#define SESSIONTYPE_IID { \
0xA13C02CB, 0x0C2C, 0x421E, \
{ 0x83, 0x17, 0xAC, 0x0E, 0x8A, 0xAA, 0x15, 0x3A } \
}
enum SessionType
{
SessionType_Null = 0,
SessionType_Direct = 1,
SessionType_Remote = 2,
SessionType_Existing = 3
};
/* End of enum SessionType Declaration */
/* Start of enum DeviceType Declaration */
#define DEVICETYPE_IID_STR "6d9420f7-0b56-4636-99f9-7346f1b01e57"
#define DEVICETYPE_IID { \
0x6d9420f7, 0x0b56, 0x4636, \
{ 0x99, 0xf9, 0x73, 0x46, 0xf1, 0xb0, 0x1e, 0x57 } \
}
enum DeviceType
{
DeviceType_Null = 0,
DeviceType_Floppy = 1,
DeviceType_DVD = 2,
DeviceType_HardDisk = 3,
DeviceType_Network = 4,
DeviceType_USB = 5,
DeviceType_SharedFolder = 6
};
/* End of enum DeviceType Declaration */
/* Start of enum DeviceActivity Declaration */
#define DEVICEACTIVITY_IID_STR "6FC8AEAA-130A-4eb5-8954-3F921422D707"
#define DEVICEACTIVITY_IID { \
0x6FC8AEAA, 0x130A, 0x4eb5, \
{ 0x89, 0x54, 0x3F, 0x92, 0x14, 0x22, 0xD7, 0x07 } \
}
enum DeviceActivity
{
DeviceActivity_Null = 0,
DeviceActivity_Idle = 1,
DeviceActivity_Reading = 2,
DeviceActivity_Writing = 3
};
/* End of enum DeviceActivity Declaration */
/* Start of enum ClipboardMode Declaration */
#define CLIPBOARDMODE_IID_STR "33364716-4008-4701-8f14-be0fa3d62950"
#define CLIPBOARDMODE_IID { \
0x33364716, 0x4008, 0x4701, \
{ 0x8f, 0x14, 0xbe, 0x0f, 0xa3, 0xd6, 0x29, 0x50 } \
}
enum ClipboardMode
{
ClipboardMode_Disabled = 0,
ClipboardMode_HostToGuest = 1,
ClipboardMode_GuestToHost = 2,
ClipboardMode_Bidirectional = 3
};
/* End of enum ClipboardMode Declaration */
/* Start of enum Scope Declaration */
#define SCOPE_IID_STR "7c91096e-499e-4eca-9f9b-9001438d7855"
#define SCOPE_IID { \
0x7c91096e, 0x499e, 0x4eca, \
{ 0x9f, 0x9b, 0x90, 0x01, 0x43, 0x8d, 0x78, 0x55 } \
}
enum Scope
{
Scope_Global = 0,
Scope_Machine = 1,
Scope_Session = 2
};
/* End of enum Scope Declaration */
/* Start of enum GuestStatisticType Declaration */
#define GUESTSTATISTICTYPE_IID_STR "aa7c1d71-aafe-47a8-9608-27d2d337cf55"
#define GUESTSTATISTICTYPE_IID { \
0xaa7c1d71, 0xaafe, 0x47a8, \
{ 0x96, 0x08, 0x27, 0xd2, 0xd3, 0x37, 0xcf, 0x55 } \
}
enum GuestStatisticType
{
GuestStatisticType_CPULoad_Idle = 0,
GuestStatisticType_CPULoad_Kernel = 1,
GuestStatisticType_CPULoad_User = 2,
GuestStatisticType_Threads = 3,
GuestStatisticType_Processes = 4,
GuestStatisticType_Handles = 5,
GuestStatisticType_MemoryLoad = 6,
GuestStatisticType_PhysMemTotal = 7,
GuestStatisticType_PhysMemAvailable = 8,
GuestStatisticType_PhysMemBalloon = 9,
GuestStatisticType_MemCommitTotal = 10,
GuestStatisticType_MemKernelTotal = 11,
GuestStatisticType_MemKernelPaged = 12,
GuestStatisticType_MemKernelNonpaged = 13,
GuestStatisticType_MemSystemCache = 14,
GuestStatisticType_PageFileSize = 15,
GuestStatisticType_SampleNumber = 16,
GuestStatisticType_MaxVal = 17
};
/* End of enum GuestStatisticType Declaration */
/* Start of enum BIOSBootMenuMode Declaration */
#define BIOSBOOTMENUMODE_IID_STR "ae4fb9f7-29d2-45b4-b2c7-d579603135d5"
#define BIOSBOOTMENUMODE_IID { \
0xae4fb9f7, 0x29d2, 0x45b4, \
{ 0xb2, 0xc7, 0xd5, 0x79, 0x60, 0x31, 0x35, 0xd5 } \
}
enum BIOSBootMenuMode
{
BIOSBootMenuMode_Disabled = 0,
BIOSBootMenuMode_MenuOnly = 1,
BIOSBootMenuMode_MessageAndMenu = 2
};
/* End of enum BIOSBootMenuMode Declaration */
/* Start of enum DriveState Declaration */
#define DRIVESTATE_IID_STR "cb7233b7-c519-42a5-8310-1830953cacbc"
#define DRIVESTATE_IID { \
0xcb7233b7, 0xc519, 0x42a5, \
{ 0x83, 0x10, 0x18, 0x30, 0x95, 0x3c, 0xac, 0xbc } \
}
enum DriveState
{
DriveState_Null = 0,
DriveState_NotMounted = 1,
DriveState_ImageMounted = 2,
DriveState_HostDriveCaptured = 3
};
/* End of enum DriveState Declaration */
/* Start of enum ProcessorFeature Declaration */
#define PROCESSORFEATURE_IID_STR "b8353b35-705d-4796-9967-ebfb7ba54af4"
#define PROCESSORFEATURE_IID { \
0xb8353b35, 0x705d, 0x4796, \
{ 0x99, 0x67, 0xeb, 0xfb, 0x7b, 0xa5, 0x4a, 0xf4 } \
}
enum ProcessorFeature
{
ProcessorFeature_HWVirtEx = 0,
ProcessorFeature_PAE = 1,
ProcessorFeature_LongMode = 2
};
/* End of enum ProcessorFeature Declaration */
/* Start of enum VFSType Declaration */
#define VFSTYPE_IID_STR "813999ba-b949-48a8-9230-aadc6285e2f2"
#define VFSTYPE_IID { \
0x813999ba, 0xb949, 0x48a8, \
{ 0x92, 0x30, 0xaa, 0xdc, 0x62, 0x85, 0xe2, 0xf2 } \
}
enum VFSType
{
VFSType_File = 1,
VFSType_Cloud = 2,
VFSType_S3 = 3,
VFSType_WebDav = 4
};
/* End of enum VFSType Declaration */
/* Start of enum VFSFileType Declaration */
#define VFSFILETYPE_IID_STR "714333cd-44e2-415f-a245-d378fa9b1242"
#define VFSFILETYPE_IID { \
0x714333cd, 0x44e2, 0x415f, \
{ 0xa2, 0x45, 0xd3, 0x78, 0xfa, 0x9b, 0x12, 0x42 } \
}
enum VFSFileType
{
VFSFileType_Unknown = 1,
VFSFileType_Fifo = 2,
VFSFileType_DevChar = 3,
VFSFileType_Directory = 4,
VFSFileType_DevBlock = 5,
VFSFileType_File = 6,
VFSFileType_SymLink = 7,
VFSFileType_Socket = 8,
VFSFileType_WhiteOut = 9
};
/* End of enum VFSFileType Declaration */
/* Start of enum CIMOSType Declaration */
#define CIMOSTYPE_IID_STR "86ef5f8c-18b2-4db8-a314-33721b59f89b"
#define CIMOSTYPE_IID { \
0x86ef5f8c, 0x18b2, 0x4db8, \
{ 0xa3, 0x14, 0x33, 0x72, 0x1b, 0x59, 0xf8, 0x9b } \
}
enum CIMOSType
{
CIMOSType_CIMOS_Unknown = 0,
CIMOSType_CIMOS_Other = 1,
CIMOSType_CIMOS_MACOS = 2,
CIMOSType_CIMOS_ATTUNIX = 3,
CIMOSType_CIMOS_DGUX = 4,
CIMOSType_CIMOS_DECNT = 5,
CIMOSType_CIMOS_Tru64UNIX = 6,
CIMOSType_CIMOS_OpenVMS = 7,
CIMOSType_CIMOS_HPUX = 8,
CIMOSType_CIMOS_AIX = 9,
CIMOSType_CIMOS_MVS = 10,
CIMOSType_CIMOS_OS400 = 11,
CIMOSType_CIMOS_OS2 = 12,
CIMOSType_CIMOS_JavaVM = 13,
CIMOSType_CIMOS_MSDOS = 14,
CIMOSType_CIMOS_WIN3x = 15,
CIMOSType_CIMOS_WIN95 = 16,
CIMOSType_CIMOS_WIN98 = 17,
CIMOSType_CIMOS_WINNT = 18,
CIMOSType_CIMOS_WINCE = 19,
CIMOSType_CIMOS_NCR3000 = 20,
CIMOSType_CIMOS_NetWare = 21,
CIMOSType_CIMOS_OSF = 22,
CIMOSType_CIMOS_DCOS = 23,
CIMOSType_CIMOS_ReliantUNIX = 24,
CIMOSType_CIMOS_SCOUnixWare = 25,
CIMOSType_CIMOS_SCOOpenServer = 26,
CIMOSType_CIMOS_Sequent = 27,
CIMOSType_CIMOS_IRIX = 28,
CIMOSType_CIMOS_Solaris = 29,
CIMOSType_CIMOS_SunOS = 30,
CIMOSType_CIMOS_U6000 = 31,
CIMOSType_CIMOS_ASERIES = 32,
CIMOSType_CIMOS_HPNonStopOS = 33,
CIMOSType_CIMOS_HPNonStopOSS = 34,
CIMOSType_CIMOS_BS2000 = 35,
CIMOSType_CIMOS_LINUX = 36,
CIMOSType_CIMOS_Lynx = 37,
CIMOSType_CIMOS_XENIX = 38,
CIMOSType_CIMOS_VM = 39,
CIMOSType_CIMOS_InteractiveUNIX = 40,
CIMOSType_CIMOS_BSDUNIX = 41,
CIMOSType_CIMOS_FreeBSD = 42,
CIMOSType_CIMOS_NetBSD = 43,
CIMOSType_CIMOS_GNUHurd = 44,
CIMOSType_CIMOS_OS9 = 45,
CIMOSType_CIMOS_MACHKernel = 46,
CIMOSType_CIMOS_Inferno = 47,
CIMOSType_CIMOS_QNX = 48,
CIMOSType_CIMOS_EPOC = 49,
CIMOSType_CIMOS_IxWorks = 50,
CIMOSType_CIMOS_VxWorks = 51,
CIMOSType_CIMOS_MiNT = 52,
CIMOSType_CIMOS_BeOS = 53,
CIMOSType_CIMOS_HPMPE = 54,
CIMOSType_CIMOS_NextStep = 55,
CIMOSType_CIMOS_PalmPilot = 56,
CIMOSType_CIMOS_Rhapsody = 57,
CIMOSType_CIMOS_Windows2000 = 58,
CIMOSType_CIMOS_Dedicated = 59,
CIMOSType_CIMOS_OS390 = 60,
CIMOSType_CIMOS_VSE = 61,
CIMOSType_CIMOS_TPF = 62,
CIMOSType_CIMOS_WindowsMe = 63,
CIMOSType_CIMOS_CalderaOpenUNIX = 64,
CIMOSType_CIMOS_OpenBSD = 65,
CIMOSType_CIMOS_NotApplicable = 66,
CIMOSType_CIMOS_WindowsXP = 67,
CIMOSType_CIMOS_zOS = 68,
CIMOSType_CIMOS_MicrosoftWindowsServer2003 = 69,
CIMOSType_CIMOS_MicrosoftWindowsServer2003_64 = 70,
CIMOSType_CIMOS_WindowsXP_64 = 71,
CIMOSType_CIMOS_WindowsXPEmbedded = 72,
CIMOSType_CIMOS_WindowsVista = 73,
CIMOSType_CIMOS_WindowsVista_64 = 74,
CIMOSType_CIMOS_WindowsEmbeddedforPointofService = 75,
CIMOSType_CIMOS_MicrosoftWindowsServer2008 = 76,
CIMOSType_CIMOS_MicrosoftWindowsServer2008_64 = 77,
CIMOSType_CIMOS_FreeBSD_64 = 78,
CIMOSType_CIMOS_RedHatEnterpriseLinux = 79,
CIMOSType_CIMOS_RedHatEnterpriseLinux_64 = 80,
CIMOSType_CIMOS_Solaris_64 = 81,
CIMOSType_CIMOS_SUSE = 82,
CIMOSType_CIMOS_SUSE_64 = 83,
CIMOSType_CIMOS_SLES = 84,
CIMOSType_CIMOS_SLES_64 = 85,
CIMOSType_CIMOS_NovellOES = 86,
CIMOSType_CIMOS_NovellLinuxDesktop = 87,
CIMOSType_CIMOS_SunJavaDesktopSystem = 88,
CIMOSType_CIMOS_Mandriva = 89,
CIMOSType_CIMOS_Mandriva_64 = 90,
CIMOSType_CIMOS_TurboLinux = 91,
CIMOSType_CIMOS_TurboLinux_64 = 92,
CIMOSType_CIMOS_Ubuntu = 93,
CIMOSType_CIMOS_Ubuntu_64 = 94,
CIMOSType_CIMOS_Debian = 95,
CIMOSType_CIMOS_Debian_64 = 96,
CIMOSType_CIMOS_Linux_2_4_x = 97,
CIMOSType_CIMOS_Linux_2_4_x_64 = 98,
CIMOSType_CIMOS_Linux_2_6_x = 99,
CIMOSType_CIMOS_Linux_2_6_x_64 = 100,
CIMOSType_CIMOS_Linux_64 = 101,
CIMOSType_CIMOS_Other_64 = 102
};
/* End of enum CIMOSType Declaration */
/* Start of enum OVFResourceType Declaration */
#define OVFRESOURCETYPE_IID_STR "646a78d7-6f04-49f4-82c4-75c28a75a4cd"
#define OVFRESOURCETYPE_IID { \
0x646a78d7, 0x6f04, 0x49f4, \
{ 0x82, 0xc4, 0x75, 0xc2, 0x8a, 0x75, 0xa4, 0xcd } \
}
enum OVFResourceType
{
OVFResourceType_Other = 1,
OVFResourceType_ComputerSystem = 2,
OVFResourceType_Processor = 3,
OVFResourceType_Memory = 4,
OVFResourceType_IDEController = 5,
OVFResourceType_ParallelSCSIHBA = 6,
OVFResourceType_FCHBA = 7,
OVFResourceType_iSCSIHBA = 8,
OVFResourceType_IBHCA = 9,
OVFResourceType_EthernetAdapter = 10,
OVFResourceType_OtherNetworkAdapter = 11,
OVFResourceType_IOSlot = 12,
OVFResourceType_IODevice = 13,
OVFResourceType_FloppyDrive = 14,
OVFResourceType_CDDrive = 15,
OVFResourceType_DVDDrive = 16,
OVFResourceType_HardDisk = 17,
OVFResourceType_OtherStorageDevice = 20,
OVFResourceType_USBController = 23,
OVFResourceType_SoundCard = 35
};
/* End of enum OVFResourceType Declaration */
/* Start of enum VirtualSystemDescriptionType Declaration */
#define VIRTUALSYSTEMDESCRIPTIONTYPE_IID_STR "aacc58de-5b45-4f82-ae2e-dd9a824fc3b5"
#define VIRTUALSYSTEMDESCRIPTIONTYPE_IID { \
0xaacc58de, 0x5b45, 0x4f82, \
{ 0xae, 0x2e, 0xdd, 0x9a, 0x82, 0x4f, 0xc3, 0xb5 } \
}
enum VirtualSystemDescriptionType
{
VirtualSystemDescriptionType_Ignore = 1,
VirtualSystemDescriptionType_OS = 2,
VirtualSystemDescriptionType_Name = 3,
VirtualSystemDescriptionType_Product = 4,
VirtualSystemDescriptionType_Vendor = 5,
VirtualSystemDescriptionType_Version = 6,
VirtualSystemDescriptionType_ProductUrl = 7,
VirtualSystemDescriptionType_VendorUrl = 8,
VirtualSystemDescriptionType_Description = 9,
VirtualSystemDescriptionType_License = 10,
VirtualSystemDescriptionType_Miscellaneous = 11,
VirtualSystemDescriptionType_CPU = 12,
VirtualSystemDescriptionType_Memory = 13,
VirtualSystemDescriptionType_HardDiskControllerIDE = 14,
VirtualSystemDescriptionType_HardDiskControllerSATA = 15,
VirtualSystemDescriptionType_HardDiskControllerSCSI = 16,
VirtualSystemDescriptionType_HardDiskImage = 17,
VirtualSystemDescriptionType_Floppy = 18,
VirtualSystemDescriptionType_CDROM = 19,
VirtualSystemDescriptionType_NetworkAdapter = 20,
VirtualSystemDescriptionType_USBController = 21,
VirtualSystemDescriptionType_SoundCard = 22
};
/* End of enum VirtualSystemDescriptionType Declaration */
/* Start of enum VirtualSystemDescriptionValueType Declaration */
#define VIRTUALSYSTEMDESCRIPTIONVALUETYPE_IID_STR "56d9403f-3425-4118-9919-36f2a9b8c77c"
#define VIRTUALSYSTEMDESCRIPTIONVALUETYPE_IID { \
0x56d9403f, 0x3425, 0x4118, \
{ 0x99, 0x19, 0x36, 0xf2, 0xa9, 0xb8, 0xc7, 0x7c } \
}
enum VirtualSystemDescriptionValueType
{
VirtualSystemDescriptionValueType_Reference = 1,
VirtualSystemDescriptionValueType_Original = 2,
VirtualSystemDescriptionValueType_Auto = 3,
VirtualSystemDescriptionValueType_ExtraConfig = 4
};
/* End of enum VirtualSystemDescriptionValueType Declaration */
/* Start of enum HostNetworkInterfaceMediumType Declaration */
#define HOSTNETWORKINTERFACEMEDIUMTYPE_IID_STR "1aa54aaf-2497-45a2-bfb1-8eb225e93d5b"
#define HOSTNETWORKINTERFACEMEDIUMTYPE_IID { \
0x1aa54aaf, 0x2497, 0x45a2, \
{ 0xbf, 0xb1, 0x8e, 0xb2, 0x25, 0xe9, 0x3d, 0x5b } \
}
enum HostNetworkInterfaceMediumType
{
HostNetworkInterfaceMediumType_Unknown = 0,
HostNetworkInterfaceMediumType_Ethernet = 1,
HostNetworkInterfaceMediumType_PPP = 2,
HostNetworkInterfaceMediumType_SLIP = 3
};
/* End of enum HostNetworkInterfaceMediumType Declaration */
/* Start of enum HostNetworkInterfaceStatus Declaration */
#define HOSTNETWORKINTERFACESTATUS_IID_STR "CC474A69-2710-434B-8D99-C38E5D5A6F41"
#define HOSTNETWORKINTERFACESTATUS_IID { \
0xCC474A69, 0x2710, 0x434B, \
{ 0x8D, 0x99, 0xC3, 0x8E, 0x5D, 0x5A, 0x6F, 0x41 } \
}
enum HostNetworkInterfaceStatus
{
HostNetworkInterfaceStatus_Unknown = 0,
HostNetworkInterfaceStatus_Up = 1,
HostNetworkInterfaceStatus_Down = 2
};
/* End of enum HostNetworkInterfaceStatus Declaration */
/* Start of enum HostNetworkInterfaceType Declaration */
#define HOSTNETWORKINTERFACETYPE_IID_STR "67431b00-9946-48a2-bc02-b25c5919f4f3"
#define HOSTNETWORKINTERFACETYPE_IID { \
0x67431b00, 0x9946, 0x48a2, \
{ 0xbc, 0x02, 0xb2, 0x5c, 0x59, 0x19, 0xf4, 0xf3 } \
}
enum HostNetworkInterfaceType
{
HostNetworkInterfaceType_Bridged = 1,
HostNetworkInterfaceType_HostOnly = 2
};
/* End of enum HostNetworkInterfaceType Declaration */
/* Start of enum MediaState Declaration */
#define MEDIASTATE_IID_STR "8b86e03c-2f1c-412a-8fbd-326f62701200"
#define MEDIASTATE_IID { \
0x8b86e03c, 0x2f1c, 0x412a, \
{ 0x8f, 0xbd, 0x32, 0x6f, 0x62, 0x70, 0x12, 0x00 } \
}
enum MediaState
{
MediaState_NotCreated = 0,
MediaState_Created = 1,
MediaState_LockedRead = 2,
MediaState_LockedWrite = 3,
MediaState_Inaccessible = 4,
MediaState_Creating = 5,
MediaState_Deleting = 6
};
/* End of enum MediaState Declaration */
/* Start of enum HardDiskType Declaration */
#define HARDDISKTYPE_IID_STR "a348fafd-a64e-4643-ba65-eb3896bd7e0a"
#define HARDDISKTYPE_IID { \
0xa348fafd, 0xa64e, 0x4643, \
{ 0xba, 0x65, 0xeb, 0x38, 0x96, 0xbd, 0x7e, 0x0a } \
}
enum HardDiskType
{
HardDiskType_Normal = 0,
HardDiskType_Immutable = 1,
HardDiskType_Writethrough = 2
};
/* End of enum HardDiskType Declaration */
/* Start of enum HardDiskVariant Declaration */
#define HARDDISKVARIANT_IID_STR "eb7fc6b3-ae23-4c5d-a1f6-e3522dd1efb0"
#define HARDDISKVARIANT_IID { \
0xeb7fc6b3, 0xae23, 0x4c5d, \
{ 0xa1, 0xf6, 0xe3, 0x52, 0x2d, 0xd1, 0xef, 0xb0 } \
}
enum HardDiskVariant
{
HardDiskVariant_Standard = 0,
HardDiskVariant_VmdkSplit2G = 0x01,
HardDiskVariant_VmdkStreamOptimized = 0x04,
HardDiskVariant_VmdkESX = 0x08,
HardDiskVariant_Fixed = 0x10000,
HardDiskVariant_Diff = 0x20000
};
/* End of enum HardDiskVariant Declaration */
/* Start of enum DataType Declaration */
#define DATATYPE_IID_STR "d90ea51e-a3f1-4a01-beb1-c1723c0d3ba7"
#define DATATYPE_IID { \
0xd90ea51e, 0xa3f1, 0x4a01, \
{ 0xbe, 0xb1, 0xc1, 0x72, 0x3c, 0x0d, 0x3b, 0xa7 } \
}
enum DataType
{
DataType_Int32 = 0,
DataType_Int8 = 1,
DataType_String = 2
};
/* End of enum DataType Declaration */
/* Start of enum DataFlags Declaration */
#define DATAFLAGS_IID_STR "86884dcf-1d6b-4f1b-b4bf-f5aa44959d60"
#define DATAFLAGS_IID { \
0x86884dcf, 0x1d6b, 0x4f1b, \
{ 0xb4, 0xbf, 0xf5, 0xaa, 0x44, 0x95, 0x9d, 0x60 } \
}
enum DataFlags
{
DataFlags_None = 0x00,
DataFlags_Mandatory = 0x01,
DataFlags_Expert = 0x02,
DataFlags_Array = 0x04,
DataFlags_FlagMask = 0x07
};
/* End of enum DataFlags Declaration */
/* Start of enum HardDiskFormatCapabilities Declaration */
#define HARDDISKFORMATCAPABILITIES_IID_STR "1df1e4aa-d25a-4ba6-b2a2-02f60eb5903b"
#define HARDDISKFORMATCAPABILITIES_IID { \
0x1df1e4aa, 0xd25a, 0x4ba6, \
{ 0xb2, 0xa2, 0x02, 0xf6, 0x0e, 0xb5, 0x90, 0x3b } \
}
enum HardDiskFormatCapabilities
{
HardDiskFormatCapabilities_Uuid = 0x01,
HardDiskFormatCapabilities_CreateFixed = 0x02,
HardDiskFormatCapabilities_CreateDynamic = 0x04,
HardDiskFormatCapabilities_CreateSplit2G = 0x08,
HardDiskFormatCapabilities_Differencing = 0x10,
HardDiskFormatCapabilities_Asynchronous = 0x20,
HardDiskFormatCapabilities_File = 0x40,
HardDiskFormatCapabilities_Properties = 0x80,
HardDiskFormatCapabilities_CapabilityMask = 0xFF
};
/* End of enum HardDiskFormatCapabilities Declaration */
/* Start of enum MouseButtonState Declaration */
#define MOUSEBUTTONSTATE_IID_STR "03131722-2EC5-4173-9794-0DACA46673EF"
#define MOUSEBUTTONSTATE_IID { \
0x03131722, 0x2EC5, 0x4173, \
{ 0x97, 0x94, 0x0D, 0xAC, 0xA4, 0x66, 0x73, 0xEF } \
}
enum MouseButtonState
{
MouseButtonState_LeftButton = 0x01,
MouseButtonState_RightButton = 0x02,
MouseButtonState_MiddleButton = 0x04,
MouseButtonState_WheelUp = 0x08,
MouseButtonState_WheelDown = 0x10,
MouseButtonState_MouseStateMask = 0x1F
};
/* End of enum MouseButtonState Declaration */
/* Start of enum FramebufferPixelFormat Declaration */
#define FRAMEBUFFERPIXELFORMAT_IID_STR "7acfd5ed-29e3-45e3-8136-73c9224f3d2d"
#define FRAMEBUFFERPIXELFORMAT_IID { \
0x7acfd5ed, 0x29e3, 0x45e3, \
{ 0x81, 0x36, 0x73, 0xc9, 0x22, 0x4f, 0x3d, 0x2d } \
}
enum FramebufferPixelFormat
{
FramebufferPixelFormat_Opaque = 0,
FramebufferPixelFormat_FOURCC_RGB = 0x32424752
};
/* End of enum FramebufferPixelFormat Declaration */
/* Start of enum NetworkAttachmentType Declaration */
#define NETWORKATTACHMENTTYPE_IID_STR "44bce1ee-99f7-4e8e-89fc-80597fd9eeaf"
#define NETWORKATTACHMENTTYPE_IID { \
0x44bce1ee, 0x99f7, 0x4e8e, \
{ 0x89, 0xfc, 0x80, 0x59, 0x7f, 0xd9, 0xee, 0xaf } \
}
enum NetworkAttachmentType
{
NetworkAttachmentType_Null = 0,
NetworkAttachmentType_NAT = 1,
NetworkAttachmentType_Bridged = 2,
NetworkAttachmentType_Internal = 3,
NetworkAttachmentType_HostOnly = 4
};
/* End of enum NetworkAttachmentType Declaration */
/* Start of enum NetworkAdapterType Declaration */
#define NETWORKADAPTERTYPE_IID_STR "50c3dfd8-07ac-4a31-baac-519c828fbf97"
#define NETWORKADAPTERTYPE_IID { \
0x50c3dfd8, 0x07ac, 0x4a31, \
{ 0xba, 0xac, 0x51, 0x9c, 0x82, 0x8f, 0xbf, 0x97 } \
}
enum NetworkAdapterType
{
NetworkAdapterType_Null = 0,
NetworkAdapterType_Am79C970A = 1,
NetworkAdapterType_Am79C973 = 2,
NetworkAdapterType_I82540EM = 3,
NetworkAdapterType_I82543GC = 4,
NetworkAdapterType_I82545EM = 5
};
/* End of enum NetworkAdapterType Declaration */
/* Start of enum PortMode Declaration */
#define PORTMODE_IID_STR "533b5fe3-0185-4197-86a7-17e37dd39d76"
#define PORTMODE_IID { \
0x533b5fe3, 0x0185, 0x4197, \
{ 0x86, 0xa7, 0x17, 0xe3, 0x7d, 0xd3, 0x9d, 0x76 } \
}
enum PortMode
{
PortMode_Disconnected = 0,
PortMode_HostPipe = 1,
PortMode_HostDevice = 2,
PortMode_RawFile = 3
};
/* End of enum PortMode Declaration */
/* Start of enum USBDeviceState Declaration */
#define USBDEVICESTATE_IID_STR "b99a2e65-67fb-4882-82fd-f3e5e8193ab4"
#define USBDEVICESTATE_IID { \
0xb99a2e65, 0x67fb, 0x4882, \
{ 0x82, 0xfd, 0xf3, 0xe5, 0xe8, 0x19, 0x3a, 0xb4 } \
}
enum USBDeviceState
{
USBDeviceState_NotSupported = 0,
USBDeviceState_Unavailable = 1,
USBDeviceState_Busy = 2,
USBDeviceState_Available = 3,
USBDeviceState_Held = 4,
USBDeviceState_Captured = 5
};
/* End of enum USBDeviceState Declaration */
/* Start of enum USBDeviceFilterAction Declaration */
#define USBDEVICEFILTERACTION_IID_STR "cbc30a49-2f4e-43b5-9da6-121320475933"
#define USBDEVICEFILTERACTION_IID { \
0xcbc30a49, 0x2f4e, 0x43b5, \
{ 0x9d, 0xa6, 0x12, 0x13, 0x20, 0x47, 0x59, 0x33 } \
}
enum USBDeviceFilterAction
{
USBDeviceFilterAction_Null = 0,
USBDeviceFilterAction_Ignore = 1,
USBDeviceFilterAction_Hold = 2
};
/* End of enum USBDeviceFilterAction Declaration */
/* Start of enum AudioDriverType Declaration */
#define AUDIODRIVERTYPE_IID_STR "4bcc3d73-c2fe-40db-b72f-0c2ca9d68496"
#define AUDIODRIVERTYPE_IID { \
0x4bcc3d73, 0xc2fe, 0x40db, \
{ 0xb7, 0x2f, 0x0c, 0x2c, 0xa9, 0xd6, 0x84, 0x96 } \
}
enum AudioDriverType
{
AudioDriverType_Null = 0,
AudioDriverType_WinMM = 1,
AudioDriverType_OSS = 2,
AudioDriverType_ALSA = 3,
AudioDriverType_DirectSound = 4,
AudioDriverType_CoreAudio = 5,
AudioDriverType_MMPM = 6,
AudioDriverType_Pulse = 7,
AudioDriverType_SolAudio = 8
};
/* End of enum AudioDriverType Declaration */
/* Start of enum AudioControllerType Declaration */
#define AUDIOCONTROLLERTYPE_IID_STR "7afd395c-42c3-444e-8788-3ce80292f36c"
#define AUDIOCONTROLLERTYPE_IID { \
0x7afd395c, 0x42c3, 0x444e, \
{ 0x87, 0x88, 0x3c, 0xe8, 0x02, 0x92, 0xf3, 0x6c } \
}
enum AudioControllerType
{
AudioControllerType_AC97 = 0,
AudioControllerType_SB16 = 1
};
/* End of enum AudioControllerType Declaration */
/* Start of enum VRDPAuthType Declaration */
#define VRDPAUTHTYPE_IID_STR "3d91887a-b67f-4b33-85bf-2da7ab1ea83a"
#define VRDPAUTHTYPE_IID { \
0x3d91887a, 0xb67f, 0x4b33, \
{ 0x85, 0xbf, 0x2d, 0xa7, 0xab, 0x1e, 0xa8, 0x3a } \
}
enum VRDPAuthType
{
VRDPAuthType_Null = 0,
VRDPAuthType_External = 1,
VRDPAuthType_Guest = 2
};
/* End of enum VRDPAuthType Declaration */
/* Start of enum StorageBus Declaration */
#define STORAGEBUS_IID_STR "f381fdca-5953-41d0-b2bd-0542b012698d"
#define STORAGEBUS_IID { \
0xf381fdca, 0x5953, 0x41d0, \
{ 0xb2, 0xbd, 0x05, 0x42, 0xb0, 0x12, 0x69, 0x8d } \
}
enum StorageBus
{
StorageBus_Null = 0,
StorageBus_IDE = 1,
StorageBus_SATA = 2,
StorageBus_SCSI = 3
};
/* End of enum StorageBus Declaration */
/* Start of enum StorageControllerType Declaration */
#define STORAGECONTROLLERTYPE_IID_STR "685387db-a837-4320-a258-08f46a22f62a"
#define STORAGECONTROLLERTYPE_IID { \
0x685387db, 0xa837, 0x4320, \
{ 0xa2, 0x58, 0x08, 0xf4, 0x6a, 0x22, 0xf6, 0x2a } \
}
enum StorageControllerType
{
StorageControllerType_Null = 0,
StorageControllerType_LsiLogic = 1,
StorageControllerType_BusLogic = 2,
StorageControllerType_IntelAhci = 3,
StorageControllerType_PIIX3 = 4,
StorageControllerType_PIIX4 = 5,
StorageControllerType_ICH6 = 6
};
/* End of enum StorageControllerType Declaration */
/* Start of struct IVirtualBoxErrorInfo Declaration */
#define IVIRTUALBOXERRORINFO_IID_STR "bcae7fc3-3fd0-4bac-923c-ec1596c7bc83"
#define IVIRTUALBOXERRORINFO_IID { \
0xbcae7fc3, 0x3fd0, 0x4bac, \
{ 0x92, 0x3c, 0xec, 0x15, 0x96, 0xc7, 0xbc, 0x83 } \
}
struct IVirtualBoxErrorInfo_vtbl
{
struct nsIException_vtbl nsiexception;
nsresult (*GetResultCode)(IVirtualBoxErrorInfo *pThis, PRInt32 *resultCode);
nsresult (*GetInterfaceID)(IVirtualBoxErrorInfo *pThis, nsID * *interfaceID);
nsresult (*GetComponent)(IVirtualBoxErrorInfo *pThis, PRUnichar * *component);
nsresult (*GetText)(IVirtualBoxErrorInfo *pThis, PRUnichar * *text);
nsresult (*GetNext)(IVirtualBoxErrorInfo *pThis, IVirtualBoxErrorInfo * *next);
};
struct IVirtualBoxErrorInfo
{
struct IVirtualBoxErrorInfo_vtbl *vtbl;
};
/* End of struct IVirtualBoxErrorInfo Declaration */
/* Start of struct IVirtualBoxCallback Declaration */
#define IVIRTUALBOXCALLBACK_IID_STR "2990059f-5bc8-4635-8415-658917cd3186"
#define IVIRTUALBOXCALLBACK_IID { \
0x2990059f, 0x5bc8, 0x4635, \
{ 0x84, 0x15, 0x65, 0x89, 0x17, 0xcd, 0x31, 0x86 } \
}
struct IVirtualBoxCallback_vtbl
{
struct nsISupports_vtbl nsisupports;
nsresult (*OnMachineStateChange)(
IVirtualBoxCallback *pThis,
PRUnichar * machineId,
PRUint32 state
);
nsresult (*OnMachineDataChange)(
IVirtualBoxCallback *pThis,
PRUnichar * machineId
);
nsresult (*OnExtraDataCanChange)(
IVirtualBoxCallback *pThis,
PRUnichar * machineId,
PRUnichar * key,
PRUnichar * value,
PRUnichar * * error,
PRBool * allowChange
);
nsresult (*OnExtraDataChange)(
IVirtualBoxCallback *pThis,
PRUnichar * machineId,
PRUnichar * key,
PRUnichar * value
);
nsresult (*OnMediaRegistered)(
IVirtualBoxCallback *pThis,
PRUnichar * mediaId,
PRUint32 mediaType,
PRBool registered
);
nsresult (*OnMachineRegistered)(
IVirtualBoxCallback *pThis,
PRUnichar * machineId,
PRBool registered
);
nsresult (*OnSessionStateChange)(
IVirtualBoxCallback *pThis,
PRUnichar * machineId,
PRUint32 state
);
nsresult (*OnSnapshotTaken)(
IVirtualBoxCallback *pThis,
PRUnichar * machineId,
PRUnichar * snapshotId
);
nsresult (*OnSnapshotDiscarded)(
IVirtualBoxCallback *pThis,
PRUnichar * machineId,
PRUnichar * snapshotId
);
nsresult (*OnSnapshotChange)(
IVirtualBoxCallback *pThis,
PRUnichar * machineId,
PRUnichar * snapshotId
);
nsresult (*OnGuestPropertyChange)(
IVirtualBoxCallback *pThis,
PRUnichar * machineId,
PRUnichar * name,
PRUnichar * value,
PRUnichar * flags
);
};
struct IVirtualBoxCallback
{
struct IVirtualBoxCallback_vtbl *vtbl;
};
/* End of struct IVirtualBoxCallback Declaration */
/* Start of struct IDHCPServer Declaration */
#define IDHCPSERVER_IID_STR "6cfe387c-74fb-4ca7-bff6-973bec8af7a3"
#define IDHCPSERVER_IID { \
0x6cfe387c, 0x74fb, 0x4ca7, \
{ 0xbf, 0xf6, 0x97, 0x3b, 0xec, 0x8a, 0xf7, 0xa3 } \
}
struct IDHCPServer_vtbl
{
struct nsISupports_vtbl nsisupports;
nsresult (*GetEnabled)(IDHCPServer *pThis, PRBool *enabled);
nsresult (*SetEnabled)(IDHCPServer *pThis, PRBool enabled);
nsresult (*GetIPAddress)(IDHCPServer *pThis, PRUnichar * *IPAddress);
nsresult (*GetNetworkMask)(IDHCPServer *pThis, PRUnichar * *networkMask);
nsresult (*GetNetworkName)(IDHCPServer *pThis, PRUnichar * *networkName);
nsresult (*GetLowerIP)(IDHCPServer *pThis, PRUnichar * *lowerIP);
nsresult (*GetUpperIP)(IDHCPServer *pThis, PRUnichar * *upperIP);
nsresult (*SetConfiguration)(
IDHCPServer *pThis,
PRUnichar * IPAddress,
PRUnichar * networkMask,
PRUnichar * FromIPAddress,
PRUnichar * ToIPAddress
);
nsresult (*Start)(
IDHCPServer *pThis,
PRUnichar * networkName,
PRUnichar * trunkName,
PRUnichar * trunkType
);
nsresult (*Stop)(IDHCPServer *pThis );
};
struct IDHCPServer
{
struct IDHCPServer_vtbl *vtbl;
};
/* End of struct IDHCPServer Declaration */
/* Start of struct IVirtualBox Declaration */
#define IVIRTUALBOX_IID_STR "3f4ab53a-199b-4526-a91a-93ff62e456b8"
#define IVIRTUALBOX_IID { \
0x3f4ab53a, 0x199b, 0x4526, \
{ 0xa9, 0x1a, 0x93, 0xff, 0x62, 0xe4, 0x56, 0xb8 } \
}
struct IVirtualBox_vtbl
{
struct nsISupports_vtbl nsisupports;
nsresult (*GetVersion)(IVirtualBox *pThis, PRUnichar * *version);
nsresult (*GetRevision)(IVirtualBox *pThis, PRUint32 *revision);
nsresult (*GetPackageType)(IVirtualBox *pThis, PRUnichar * *packageType);
nsresult (*GetHomeFolder)(IVirtualBox *pThis, PRUnichar * *homeFolder);
nsresult (*GetSettingsFilePath)(IVirtualBox *pThis, PRUnichar * *settingsFilePath);
nsresult (*GetSettingsFileVersion)(IVirtualBox *pThis, PRUnichar * *settingsFileVersion);
nsresult (*GetSettingsFormatVersion)(IVirtualBox *pThis, PRUnichar * *settingsFormatVersion);
nsresult (*GetHost)(IVirtualBox *pThis, IHost * *host);
nsresult (*GetSystemProperties)(IVirtualBox *pThis, ISystemProperties * *systemProperties);
nsresult (*GetMachines)(IVirtualBox *pThis, PRUint32 *machinesSize, IMachine * **machines);
nsresult (*GetHardDisks)(IVirtualBox *pThis, PRUint32 *hardDisksSize, IHardDisk * **hardDisks);
nsresult (*GetDVDImages)(IVirtualBox *pThis, PRUint32 *DVDImagesSize, IDVDImage * **DVDImages);
nsresult (*GetFloppyImages)(IVirtualBox *pThis, PRUint32 *floppyImagesSize, IFloppyImage * **floppyImages);
nsresult (*GetProgressOperations)(IVirtualBox *pThis, PRUint32 *progressOperationsSize, IProgress * **progressOperations);
nsresult (*GetGuestOSTypes)(IVirtualBox *pThis, PRUint32 *guestOSTypesSize, IGuestOSType * **guestOSTypes);
nsresult (*GetSharedFolders)(IVirtualBox *pThis, PRUint32 *sharedFoldersSize, ISharedFolder * **sharedFolders);
nsresult (*GetPerformanceCollector)(IVirtualBox *pThis, IPerformanceCollector * *performanceCollector);
nsresult (*GetDHCPServers)(IVirtualBox *pThis, PRUint32 *DHCPServersSize, IDHCPServer * **DHCPServers);
nsresult (*CreateMachine)(
IVirtualBox *pThis,
PRUnichar * name,
PRUnichar * osTypeId,
PRUnichar * baseFolder,
PRUnichar * id,
IMachine * * machine
);
nsresult (*CreateLegacyMachine)(
IVirtualBox *pThis,
PRUnichar * name,
PRUnichar * osTypeId,
PRUnichar * settingsFile,
PRUnichar * id,
IMachine * * machine
);
nsresult (*OpenMachine)(
IVirtualBox *pThis,
PRUnichar * settingsFile,
IMachine * * machine
);
nsresult (*RegisterMachine)(
IVirtualBox *pThis,
IMachine * machine
);
nsresult (*GetMachine)(
IVirtualBox *pThis,
PRUnichar * id,
IMachine * * machine
);
nsresult (*FindMachine)(
IVirtualBox *pThis,
PRUnichar * name,
IMachine * * machine
);
nsresult (*UnregisterMachine)(
IVirtualBox *pThis,
PRUnichar * id,
IMachine * * machine
);
nsresult (*CreateAppliance)(
IVirtualBox *pThis,
IAppliance * * appliance
);
nsresult (*CreateHardDisk)(
IVirtualBox *pThis,
PRUnichar * format,
PRUnichar * location,
IHardDisk * * hardDisk
);
nsresult (*OpenHardDisk)(
IVirtualBox *pThis,
PRUnichar * location,
PRUint32 accessMode,
PRBool setImageId,
PRUnichar * imageId,
PRBool setParentId,
PRUnichar * parentId,
IHardDisk * * hardDisk
);
nsresult (*GetHardDisk)(
IVirtualBox *pThis,
PRUnichar * id,
IHardDisk * * hardDisk
);
nsresult (*FindHardDisk)(
IVirtualBox *pThis,
PRUnichar * location,
IHardDisk * * hardDisk
);
nsresult (*OpenDVDImage)(
IVirtualBox *pThis,
PRUnichar * location,
PRUnichar * id,
IDVDImage * * image
);
nsresult (*GetDVDImage)(
IVirtualBox *pThis,
PRUnichar * id,
IDVDImage * * image
);
nsresult (*FindDVDImage)(
IVirtualBox *pThis,
PRUnichar * location,
IDVDImage * * image
);
nsresult (*OpenFloppyImage)(
IVirtualBox *pThis,
PRUnichar * location,
PRUnichar * id,
IFloppyImage * * image
);
nsresult (*GetFloppyImage)(
IVirtualBox *pThis,
PRUnichar * id,
IFloppyImage * * image
);
nsresult (*FindFloppyImage)(
IVirtualBox *pThis,
PRUnichar * location,
IFloppyImage * * image
);
nsresult (*GetGuestOSType)(
IVirtualBox *pThis,
PRUnichar * id,
IGuestOSType * * type
);
nsresult (*CreateSharedFolder)(
IVirtualBox *pThis,
PRUnichar * name,
PRUnichar * hostPath,
PRBool writable
);
nsresult (*RemoveSharedFolder)(
IVirtualBox *pThis,
PRUnichar * name
);
nsresult (*GetNextExtraDataKey)(
IVirtualBox *pThis,
PRUnichar * key,
PRUnichar * * nextKey,
PRUnichar * * nextValue
);
nsresult (*GetExtraData)(
IVirtualBox *pThis,
PRUnichar * key,
PRUnichar * * value
);
nsresult (*SetExtraData)(
IVirtualBox *pThis,
PRUnichar * key,
PRUnichar * value
);
nsresult (*OpenSession)(
IVirtualBox *pThis,
ISession * session,
PRUnichar * machineId
);
nsresult (*OpenRemoteSession)(
IVirtualBox *pThis,
ISession * session,
PRUnichar * machineId,
PRUnichar * type,
PRUnichar * environment,
IProgress * * progress
);
nsresult (*OpenExistingSession)(
IVirtualBox *pThis,
ISession * session,
PRUnichar * machineId
);
nsresult (*RegisterCallback)(
IVirtualBox *pThis,
IVirtualBoxCallback * callback
);
nsresult (*UnregisterCallback)(
IVirtualBox *pThis,
IVirtualBoxCallback * callback
);
nsresult (*WaitForPropertyChange)(
IVirtualBox *pThis,
PRUnichar * what,
PRUint32 timeout,
PRUnichar * * changed,
PRUnichar * * values
);
nsresult (*SaveSettings)(IVirtualBox *pThis );
nsresult (*SaveSettingsWithBackup)(
IVirtualBox *pThis,
PRUnichar * * bakFileName
);
nsresult (*CreateDHCPServer)(
IVirtualBox *pThis,
PRUnichar * name,
IDHCPServer * * server
);
nsresult (*FindDHCPServerByNetworkName)(
IVirtualBox *pThis,
PRUnichar * name,
IDHCPServer * * server
);
nsresult (*RemoveDHCPServer)(
IVirtualBox *pThis,
IDHCPServer * server
);
};
struct IVirtualBox
{
struct IVirtualBox_vtbl *vtbl;
};
/* End of struct IVirtualBox Declaration */
/* Start of struct IVFSExplorer Declaration */
#define IVFSEXPLORER_IID_STR "2bb864a1-02a3-4474-a1d4-fb5f23b742e1"
#define IVFSEXPLORER_IID { \
0x2bb864a1, 0x02a3, 0x4474, \
{ 0xa1, 0xd4, 0xfb, 0x5f, 0x23, 0xb7, 0x42, 0xe1 } \
}
struct IVFSExplorer_vtbl
{
struct nsISupports_vtbl nsisupports;
nsresult (*GetPath)(IVFSExplorer *pThis, PRUnichar * *path);
nsresult (*GetType)(IVFSExplorer *pThis, PRUint32 *type);
nsresult (*Update)(
IVFSExplorer *pThis,
IProgress * * aProgress
);
nsresult (*Cd)(
IVFSExplorer *pThis,
PRUnichar * aDir,
IProgress * * aProgress
);
nsresult (*CdUp)(
IVFSExplorer *pThis,
IProgress * * aProgress
);
nsresult (*EntryList)(
IVFSExplorer *pThis,
PRUint32 *aNamesSize,
PRUnichar *** aNames,
PRUint32 *aTypesSize,
PRUint32* aTypes
);
nsresult (*Exists)(
IVFSExplorer *pThis,
PRUint32 aNamesSize,
PRUnichar ** aNames,
PRUint32 *aExistsSize,
PRUnichar *** aExists
);
nsresult (*Remove)(
IVFSExplorer *pThis,
PRUint32 aNamesSize,
PRUnichar ** aNames,
IProgress * * aProgress
);
};
struct IVFSExplorer
{
struct IVFSExplorer_vtbl *vtbl;
};
/* End of struct IVFSExplorer Declaration */
/* Start of struct IAppliance Declaration */
#define IAPPLIANCE_IID_STR "07495095-d16c-4911-8964-5914341ced5d"
#define IAPPLIANCE_IID { \
0x07495095, 0xd16c, 0x4911, \
{ 0x89, 0x64, 0x59, 0x14, 0x34, 0x1c, 0xed, 0x5d } \
}
struct IAppliance_vtbl
{
struct nsISupports_vtbl nsisupports;
nsresult (*GetPath)(IAppliance *pThis, PRUnichar * *path);
nsresult (*GetDisks)(IAppliance *pThis, PRUint32 *disksSize, PRUnichar * **disks);
nsresult (*GetVirtualSystemDescriptions)(IAppliance *pThis, PRUint32 *virtualSystemDescriptionsSize, IVirtualSystemDescription * **virtualSystemDescriptions);
nsresult (*Read)(
IAppliance *pThis,
PRUnichar * file
);
nsresult (*Interpret)(IAppliance *pThis );
nsresult (*ImportMachines)(
IAppliance *pThis,
IProgress * * aProgress
);
nsresult (*CreateVFSExplorer)(
IAppliance *pThis,
PRUnichar * aUri,
IVFSExplorer * * aExplorer
);
nsresult (*Write)(
IAppliance *pThis,
PRUnichar * format,
PRUnichar * path,
IProgress * * aProgress
);
nsresult (*GetWarnings)(
IAppliance *pThis,
PRUint32 *aWarningsSize,
PRUnichar *** aWarnings
);
};
struct IAppliance
{
struct IAppliance_vtbl *vtbl;
};
/* End of struct IAppliance Declaration */
/* Start of struct IVirtualSystemDescription Declaration */
#define IVIRTUALSYSTEMDESCRIPTION_IID_STR "d7525e6c-531a-4c51-8e04-41235083a3d8"
#define IVIRTUALSYSTEMDESCRIPTION_IID { \
0xd7525e6c, 0x531a, 0x4c51, \
{ 0x8e, 0x04, 0x41, 0x23, 0x50, 0x83, 0xa3, 0xd8 } \
}
struct IVirtualSystemDescription_vtbl
{
struct nsISupports_vtbl nsisupports;
nsresult (*GetCount)(IVirtualSystemDescription *pThis, PRUint32 *count);
nsresult (*GetDescription)(
IVirtualSystemDescription *pThis,
PRUint32 *aTypesSize,
PRUint32* aTypes,
PRUint32 *aRefsSize,
PRUnichar *** aRefs,
PRUint32 *aOvfValuesSize,
PRUnichar *** aOvfValues,
PRUint32 *aVBoxValuesSize,
PRUnichar *** aVBoxValues,
PRUint32 *aExtraConfigValuesSize,
PRUnichar *** aExtraConfigValues
);
nsresult (*GetDescriptionByType)(
IVirtualSystemDescription *pThis,
PRUint32 aType,
PRUint32 *aTypesSize,
PRUint32* aTypes,
PRUint32 *aRefsSize,
PRUnichar *** aRefs,
PRUint32 *aOvfValuesSize,
PRUnichar *** aOvfValues,
PRUint32 *aVBoxValuesSize,
PRUnichar *** aVBoxValues,
PRUint32 *aExtraConfigValuesSize,
PRUnichar *** aExtraConfigValues
);
nsresult (*GetValuesByType)(
IVirtualSystemDescription *pThis,
PRUint32 aType,
PRUint32 aWhich,
PRUint32 *aValuesSize,
PRUnichar *** aValues
);
nsresult (*SetFinalValues)(
IVirtualSystemDescription *pThis,
PRUint32 aEnabledSize,
PRBool* aEnabled,
PRUint32 aVBoxValuesSize,
PRUnichar ** aVBoxValues,
PRUint32 aExtraConfigValuesSize,
PRUnichar ** aExtraConfigValues
);
nsresult (*AddDescription)(
IVirtualSystemDescription *pThis,
PRUint32 aType,
PRUnichar * aVBoxValue,
PRUnichar * aExtraConfigValue
);
};
struct IVirtualSystemDescription
{
struct IVirtualSystemDescription_vtbl *vtbl;
};
/* End of struct IVirtualSystemDescription Declaration */
/* Start of struct IInternalMachineControl Declaration */
#define IINTERNALMACHINECONTROL_IID_STR "ce8087d7-de92-4bbb-8140-a22fb07f37ba"
#define IINTERNALMACHINECONTROL_IID { \
0xce8087d7, 0xde92, 0x4bbb, \
{ 0x81, 0x40, 0xa2, 0x2f, 0xb0, 0x7f, 0x37, 0xba } \
}
struct IInternalMachineControl_vtbl
{
struct nsISupports_vtbl nsisupports;
nsresult (*SetRemoveSavedState)(
IInternalMachineControl *pThis,
PRBool aRemove
);
nsresult (*UpdateState)(
IInternalMachineControl *pThis,
PRUint32 state
);
nsresult (*GetIPCId)(
IInternalMachineControl *pThis,
PRUnichar * * id
);
nsresult (*RunUSBDeviceFilters)(
IInternalMachineControl *pThis,
IUSBDevice * device,
PRBool * matched,
PRUint32 * maskedInterfaces
);
nsresult (*CaptureUSBDevice)(
IInternalMachineControl *pThis,
PRUnichar * id
);
nsresult (*DetachUSBDevice)(
IInternalMachineControl *pThis,
PRUnichar * id,
PRBool done
);
nsresult (*AutoCaptureUSBDevices)(IInternalMachineControl *pThis );
nsresult (*DetachAllUSBDevices)(
IInternalMachineControl *pThis,
PRBool done
);
nsresult (*OnSessionEnd)(
IInternalMachineControl *pThis,
ISession * session,
IProgress * * progress
);
nsresult (*BeginSavingState)(
IInternalMachineControl *pThis,
IProgress * progress,
PRUnichar * * stateFilePath
);
nsresult (*EndSavingState)(
IInternalMachineControl *pThis,
PRBool success
);
nsresult (*AdoptSavedState)(
IInternalMachineControl *pThis,
PRUnichar * savedStateFile
);
nsresult (*BeginTakingSnapshot)(
IInternalMachineControl *pThis,
IConsole * initiator,
PRUnichar * name,
PRUnichar * description,
IProgress * progress,
PRUnichar * * stateFilePath,
IProgress * * serverProgress
);
nsresult (*EndTakingSnapshot)(
IInternalMachineControl *pThis,
PRBool success
);
nsresult (*DiscardSnapshot)(
IInternalMachineControl *pThis,
IConsole * initiator,
PRUnichar * id,
PRUint32 * machineState,
IProgress * * progress
);
nsresult (*DiscardCurrentState)(
IInternalMachineControl *pThis,
IConsole * initiator,
PRUint32 * machineState,
IProgress * * progress
);
nsresult (*DiscardCurrentSnapshotAndState)(
IInternalMachineControl *pThis,
IConsole * initiator,
PRUint32 * machineState,
IProgress * * progress
);
nsresult (*PullGuestProperties)(
IInternalMachineControl *pThis,
PRUint32 *nameSize,
PRUnichar *** name,
PRUint32 *valueSize,
PRUnichar *** value,
PRUint32 *timestampSize,
PRUint64* timestamp,
PRUint32 *flagsSize,
PRUnichar *** flags
);
nsresult (*PushGuestProperties)(
IInternalMachineControl *pThis,
PRUint32 nameSize,
PRUnichar ** name,
PRUint32 valueSize,
PRUnichar ** value,
PRUint32 timestampSize,
PRUint64* timestamp,
PRUint32 flagsSize,
PRUnichar ** flags
);
nsresult (*PushGuestProperty)(
IInternalMachineControl *pThis,
PRUnichar * name,
PRUnichar * value,
PRUint64 timestamp,
PRUnichar * flags
);
nsresult (*LockMedia)(IInternalMachineControl *pThis );
};
struct IInternalMachineControl
{
struct IInternalMachineControl_vtbl *vtbl;
};
/* End of struct IInternalMachineControl Declaration */
/* Start of struct IBIOSSettings Declaration */
#define IBIOSSETTINGS_IID_STR "38b54279-dc35-4f5e-a431-835b867c6b5e"
#define IBIOSSETTINGS_IID { \
0x38b54279, 0xdc35, 0x4f5e, \
{ 0xa4, 0x31, 0x83, 0x5b, 0x86, 0x7c, 0x6b, 0x5e } \
}
struct IBIOSSettings_vtbl
{
struct nsISupports_vtbl nsisupports;
nsresult (*GetLogoFadeIn)(IBIOSSettings *pThis, PRBool *logoFadeIn);
nsresult (*SetLogoFadeIn)(IBIOSSettings *pThis, PRBool logoFadeIn);
nsresult (*GetLogoFadeOut)(IBIOSSettings *pThis, PRBool *logoFadeOut);
nsresult (*SetLogoFadeOut)(IBIOSSettings *pThis, PRBool logoFadeOut);
nsresult (*GetLogoDisplayTime)(IBIOSSettings *pThis, PRUint32 *logoDisplayTime);
nsresult (*SetLogoDisplayTime)(IBIOSSettings *pThis, PRUint32 logoDisplayTime);
nsresult (*GetLogoImagePath)(IBIOSSettings *pThis, PRUnichar * *logoImagePath);
nsresult (*SetLogoImagePath)(IBIOSSettings *pThis, PRUnichar * logoImagePath);
nsresult (*GetBootMenuMode)(IBIOSSettings *pThis, PRUint32 *bootMenuMode);
nsresult (*SetBootMenuMode)(IBIOSSettings *pThis, PRUint32 bootMenuMode);
nsresult (*GetACPIEnabled)(IBIOSSettings *pThis, PRBool *ACPIEnabled);
nsresult (*SetACPIEnabled)(IBIOSSettings *pThis, PRBool ACPIEnabled);
nsresult (*GetIOAPICEnabled)(IBIOSSettings *pThis, PRBool *IOAPICEnabled);
nsresult (*SetIOAPICEnabled)(IBIOSSettings *pThis, PRBool IOAPICEnabled);
nsresult (*GetTimeOffset)(IBIOSSettings *pThis, PRInt64 *timeOffset);
nsresult (*SetTimeOffset)(IBIOSSettings *pThis, PRInt64 timeOffset);
nsresult (*GetPXEDebugEnabled)(IBIOSSettings *pThis, PRBool *PXEDebugEnabled);
nsresult (*SetPXEDebugEnabled)(IBIOSSettings *pThis, PRBool PXEDebugEnabled);
};
struct IBIOSSettings
{
struct IBIOSSettings_vtbl *vtbl;
};
/* End of struct IBIOSSettings Declaration */
/* Start of struct IMachine Declaration */
#define IMACHINE_IID_STR "540dcfda-3df2-49c6-88fa-033a28c2ff85"
#define IMACHINE_IID { \
0x540dcfda, 0x3df2, 0x49c6, \
{ 0x88, 0xfa, 0x03, 0x3a, 0x28, 0xc2, 0xff, 0x85 } \
}
struct IMachine_vtbl
{
struct nsISupports_vtbl nsisupports;
nsresult (*GetParent)(IMachine *pThis, IVirtualBox * *parent);
nsresult (*GetAccessible)(IMachine *pThis, PRBool *accessible);
nsresult (*GetAccessError)(IMachine *pThis, IVirtualBoxErrorInfo * *accessError);
nsresult (*GetName)(IMachine *pThis, PRUnichar * *name);
nsresult (*SetName)(IMachine *pThis, PRUnichar * name);
nsresult (*GetDescription)(IMachine *pThis, PRUnichar * *description);
nsresult (*SetDescription)(IMachine *pThis, PRUnichar * description);
nsresult (*GetId)(IMachine *pThis, PRUnichar * *id);
nsresult (*GetOSTypeId)(IMachine *pThis, PRUnichar * *OSTypeId);
nsresult (*SetOSTypeId)(IMachine *pThis, PRUnichar * OSTypeId);
nsresult (*GetHardwareVersion)(IMachine *pThis, PRUnichar * *HardwareVersion);
nsresult (*SetHardwareVersion)(IMachine *pThis, PRUnichar * HardwareVersion);
nsresult (*GetCPUCount)(IMachine *pThis, PRUint32 *CPUCount);
nsresult (*SetCPUCount)(IMachine *pThis, PRUint32 CPUCount);
nsresult (*GetMemorySize)(IMachine *pThis, PRUint32 *memorySize);
nsresult (*SetMemorySize)(IMachine *pThis, PRUint32 memorySize);
nsresult (*GetMemoryBalloonSize)(IMachine *pThis, PRUint32 *memoryBalloonSize);
nsresult (*SetMemoryBalloonSize)(IMachine *pThis, PRUint32 memoryBalloonSize);
nsresult (*GetStatisticsUpdateInterval)(IMachine *pThis, PRUint32 *statisticsUpdateInterval);
nsresult (*SetStatisticsUpdateInterval)(IMachine *pThis, PRUint32 statisticsUpdateInterval);
nsresult (*GetVRAMSize)(IMachine *pThis, PRUint32 *VRAMSize);
nsresult (*SetVRAMSize)(IMachine *pThis, PRUint32 VRAMSize);
nsresult (*GetAccelerate3DEnabled)(IMachine *pThis, PRBool *accelerate3DEnabled);
nsresult (*SetAccelerate3DEnabled)(IMachine *pThis, PRBool accelerate3DEnabled);
nsresult (*GetMonitorCount)(IMachine *pThis, PRUint32 *monitorCount);
nsresult (*SetMonitorCount)(IMachine *pThis, PRUint32 monitorCount);
nsresult (*GetBIOSSettings)(IMachine *pThis, IBIOSSettings * *BIOSSettings);
nsresult (*GetHWVirtExEnabled)(IMachine *pThis, PRBool *HWVirtExEnabled);
nsresult (*SetHWVirtExEnabled)(IMachine *pThis, PRBool HWVirtExEnabled);
nsresult (*GetHWVirtExNestedPagingEnabled)(IMachine *pThis, PRBool *HWVirtExNestedPagingEnabled);
nsresult (*SetHWVirtExNestedPagingEnabled)(IMachine *pThis, PRBool HWVirtExNestedPagingEnabled);
nsresult (*GetHWVirtExVPIDEnabled)(IMachine *pThis, PRBool *HWVirtExVPIDEnabled);
nsresult (*SetHWVirtExVPIDEnabled)(IMachine *pThis, PRBool HWVirtExVPIDEnabled);
nsresult (*GetPAEEnabled)(IMachine *pThis, PRBool *PAEEnabled);
nsresult (*SetPAEEnabled)(IMachine *pThis, PRBool PAEEnabled);
nsresult (*GetSnapshotFolder)(IMachine *pThis, PRUnichar * *snapshotFolder);
nsresult (*SetSnapshotFolder)(IMachine *pThis, PRUnichar * snapshotFolder);
nsresult (*GetVRDPServer)(IMachine *pThis, IVRDPServer * *VRDPServer);
nsresult (*GetHardDiskAttachments)(IMachine *pThis, PRUint32 *hardDiskAttachmentsSize, IHardDiskAttachment * **hardDiskAttachments);
nsresult (*GetDVDDrive)(IMachine *pThis, IDVDDrive * *DVDDrive);
nsresult (*GetFloppyDrive)(IMachine *pThis, IFloppyDrive * *floppyDrive);
nsresult (*GetUSBController)(IMachine *pThis, IUSBController * *USBController);
nsresult (*GetAudioAdapter)(IMachine *pThis, IAudioAdapter * *audioAdapter);
nsresult (*GetStorageControllers)(IMachine *pThis, PRUint32 *storageControllersSize, IStorageController * **storageControllers);
nsresult (*GetSettingsFilePath)(IMachine *pThis, PRUnichar * *settingsFilePath);
nsresult (*GetSettingsFileVersion)(IMachine *pThis, PRUnichar * *settingsFileVersion);
nsresult (*GetSettingsModified)(IMachine *pThis, PRBool *settingsModified);
nsresult (*GetSessionState)(IMachine *pThis, PRUint32 *sessionState);
nsresult (*GetSessionType)(IMachine *pThis, PRUnichar * *sessionType);
nsresult (*GetSessionPid)(IMachine *pThis, PRUint32 *sessionPid);
nsresult (*GetState)(IMachine *pThis, PRUint32 *state);
nsresult (*GetLastStateChange)(IMachine *pThis, PRInt64 *lastStateChange);
nsresult (*GetStateFilePath)(IMachine *pThis, PRUnichar * *stateFilePath);
nsresult (*GetLogFolder)(IMachine *pThis, PRUnichar * *logFolder);
nsresult (*GetCurrentSnapshot)(IMachine *pThis, ISnapshot * *currentSnapshot);
nsresult (*GetSnapshotCount)(IMachine *pThis, PRUint32 *snapshotCount);
nsresult (*GetCurrentStateModified)(IMachine *pThis, PRBool *currentStateModified);
nsresult (*GetSharedFolders)(IMachine *pThis, PRUint32 *sharedFoldersSize, ISharedFolder * **sharedFolders);
nsresult (*GetClipboardMode)(IMachine *pThis, PRUint32 *clipboardMode);
nsresult (*SetClipboardMode)(IMachine *pThis, PRUint32 clipboardMode);
nsresult (*GetGuestPropertyNotificationPatterns)(IMachine *pThis, PRUnichar * *guestPropertyNotificationPatterns);
nsresult (*SetGuestPropertyNotificationPatterns)(IMachine *pThis, PRUnichar * guestPropertyNotificationPatterns);
nsresult (*SetBootOrder)(
IMachine *pThis,
PRUint32 position,
PRUint32 device
);
nsresult (*GetBootOrder)(
IMachine *pThis,
PRUint32 position,
PRUint32 * device
);
nsresult (*AttachHardDisk)(
IMachine *pThis,
PRUnichar * id,
PRUnichar * name,
PRInt32 controllerPort,
PRInt32 device
);
nsresult (*GetHardDisk)(
IMachine *pThis,
PRUnichar * name,
PRInt32 controllerPort,
PRInt32 device,
IHardDisk * * hardDisk
);
nsresult (*DetachHardDisk)(
IMachine *pThis,
PRUnichar * name,
PRInt32 controllerPort,
PRInt32 device
);
nsresult (*GetHardDiskAttachmentsOfController)(
IMachine *pThis,
PRUnichar * name,
PRUint32 *hardDiskAttachmentsSize,
IHardDiskAttachment *** hardDiskAttachments
);
nsresult (*GetNetworkAdapter)(
IMachine *pThis,
PRUint32 slot,
INetworkAdapter * * adapter
);
nsresult (*AddStorageController)(
IMachine *pThis,
PRUnichar * name,
PRUint32 connectionType,
IStorageController * * controller
);
nsresult (*GetStorageControllerByName)(
IMachine *pThis,
PRUnichar * name,
IStorageController * * storageController
);
nsresult (*RemoveStorageController)(
IMachine *pThis,
PRUnichar * name
);
nsresult (*GetSerialPort)(
IMachine *pThis,
PRUint32 slot,
ISerialPort * * port
);
nsresult (*GetParallelPort)(
IMachine *pThis,
PRUint32 slot,
IParallelPort * * port
);
nsresult (*GetNextExtraDataKey)(
IMachine *pThis,
PRUnichar * key,
PRUnichar * * nextKey,
PRUnichar * * nextValue
);
nsresult (*GetExtraData)(
IMachine *pThis,
PRUnichar * key,
PRUnichar * * value
);
nsresult (*SetExtraData)(
IMachine *pThis,
PRUnichar * key,
PRUnichar * value
);
nsresult (*SaveSettings)(IMachine *pThis );
nsresult (*SaveSettingsWithBackup)(
IMachine *pThis,
PRUnichar * * bakFileName
);
nsresult (*DiscardSettings)(IMachine *pThis );
nsresult (*DeleteSettings)(IMachine *pThis );
nsresult (*Export)(
IMachine *pThis,
IAppliance * aAppliance,
IVirtualSystemDescription * * aDescription
);
nsresult (*GetSnapshot)(
IMachine *pThis,
PRUnichar * id,
ISnapshot * * snapshot
);
nsresult (*FindSnapshot)(
IMachine *pThis,
PRUnichar * name,
ISnapshot * * snapshot
);
nsresult (*SetCurrentSnapshot)(
IMachine *pThis,
PRUnichar * id
);
nsresult (*CreateSharedFolder)(
IMachine *pThis,
PRUnichar * name,
PRUnichar * hostPath,
PRBool writable
);
nsresult (*RemoveSharedFolder)(
IMachine *pThis,
PRUnichar * name
);
nsresult (*CanShowConsoleWindow)(
IMachine *pThis,
PRBool * canShow
);
nsresult (*ShowConsoleWindow)(
IMachine *pThis,
PRUint64 * winId
);
nsresult (*GetGuestProperty)(
IMachine *pThis,
PRUnichar * name,
PRUnichar * * value,
PRUint64 * timestamp,
PRUnichar * * flags
);
nsresult (*GetGuestPropertyValue)(
IMachine *pThis,
PRUnichar * property,
PRUnichar * * value
);
nsresult (*GetGuestPropertyTimestamp)(
IMachine *pThis,
PRUnichar * property,
PRUint64 * value
);
nsresult (*SetGuestProperty)(
IMachine *pThis,
PRUnichar * property,
PRUnichar * value,
PRUnichar * flags
);
nsresult (*SetGuestPropertyValue)(
IMachine *pThis,
PRUnichar * property,
PRUnichar * value
);
nsresult (*EnumerateGuestProperties)(
IMachine *pThis,
PRUnichar * patterns,
PRUint32 *nameSize,
PRUnichar *** name,
PRUint32 *valueSize,
PRUnichar *** value,
PRUint32 *timestampSize,
PRUint64* timestamp,
PRUint32 *flagsSize,
PRUnichar *** flags
);
};
struct IMachine
{
struct IMachine_vtbl *vtbl;
};
/* End of struct IMachine Declaration */
/* Start of struct IConsoleCallback Declaration */
#define ICONSOLECALLBACK_IID_STR "13dfbef3-b74d-487d-bada-2304529aefa6"
#define ICONSOLECALLBACK_IID { \
0x13dfbef3, 0xb74d, 0x487d, \
{ 0xba, 0xda, 0x23, 0x04, 0x52, 0x9a, 0xef, 0xa6 } \
}
struct IConsoleCallback_vtbl
{
struct nsISupports_vtbl nsisupports;
nsresult (*OnMousePointerShapeChange)(
IConsoleCallback *pThis,
PRBool visible,
PRBool alpha,
PRUint32 xHot,
PRUint32 yHot,
PRUint32 width,
PRUint32 height,
PRUint8 * shape
);
nsresult (*OnMouseCapabilityChange)(
IConsoleCallback *pThis,
PRBool supportsAbsolute,
PRBool needsHostCursor
);
nsresult (*OnKeyboardLedsChange)(
IConsoleCallback *pThis,
PRBool numLock,
PRBool capsLock,
PRBool scrollLock
);
nsresult (*OnStateChange)(
IConsoleCallback *pThis,
PRUint32 state
);
nsresult (*OnAdditionsStateChange)(IConsoleCallback *pThis );
nsresult (*OnDVDDriveChange)(IConsoleCallback *pThis );
nsresult (*OnFloppyDriveChange)(IConsoleCallback *pThis );
nsresult (*OnNetworkAdapterChange)(
IConsoleCallback *pThis,
INetworkAdapter * networkAdapter
);
nsresult (*OnSerialPortChange)(
IConsoleCallback *pThis,
ISerialPort * serialPort
);
nsresult (*OnParallelPortChange)(
IConsoleCallback *pThis,
IParallelPort * parallelPort
);
nsresult (*OnStorageControllerChange)(IConsoleCallback *pThis );
nsresult (*OnVRDPServerChange)(IConsoleCallback *pThis );
nsresult (*OnUSBControllerChange)(IConsoleCallback *pThis );
nsresult (*OnUSBDeviceStateChange)(
IConsoleCallback *pThis,
IUSBDevice * device,
PRBool attached,
IVirtualBoxErrorInfo * error
);
nsresult (*OnSharedFolderChange)(
IConsoleCallback *pThis,
PRUint32 scope
);
nsresult (*OnRuntimeError)(
IConsoleCallback *pThis,
PRBool fatal,
PRUnichar * id,
PRUnichar * message
);
nsresult (*OnCanShowWindow)(
IConsoleCallback *pThis,
PRBool * canShow
);
nsresult (*OnShowWindow)(
IConsoleCallback *pThis,
PRUint64 * winId
);
};
struct IConsoleCallback
{
struct IConsoleCallback_vtbl *vtbl;
};
/* End of struct IConsoleCallback Declaration */
/* Start of struct IRemoteDisplayInfo Declaration */
#define IREMOTEDISPLAYINFO_IID_STR "550104cd-2dfd-4a6c-857d-f6f8e088e62c"
#define IREMOTEDISPLAYINFO_IID { \
0x550104cd, 0x2dfd, 0x4a6c, \
{ 0x85, 0x7d, 0xf6, 0xf8, 0xe0, 0x88, 0xe6, 0x2c } \
}
struct IRemoteDisplayInfo_vtbl
{
struct nsISupports_vtbl nsisupports;
nsresult (*GetActive)(IRemoteDisplayInfo *pThis, PRBool *active);
nsresult (*GetNumberOfClients)(IRemoteDisplayInfo *pThis, PRUint32 *numberOfClients);
nsresult (*GetBeginTime)(IRemoteDisplayInfo *pThis, PRInt64 *beginTime);
nsresult (*GetEndTime)(IRemoteDisplayInfo *pThis, PRInt64 *endTime);
nsresult (*GetBytesSent)(IRemoteDisplayInfo *pThis, PRUint64 *bytesSent);
nsresult (*GetBytesSentTotal)(IRemoteDisplayInfo *pThis, PRUint64 *bytesSentTotal);
nsresult (*GetBytesReceived)(IRemoteDisplayInfo *pThis, PRUint64 *bytesReceived);
nsresult (*GetBytesReceivedTotal)(IRemoteDisplayInfo *pThis, PRUint64 *bytesReceivedTotal);
nsresult (*GetUser)(IRemoteDisplayInfo *pThis, PRUnichar * *user);
nsresult (*GetDomain)(IRemoteDisplayInfo *pThis, PRUnichar * *domain);
nsresult (*GetClientName)(IRemoteDisplayInfo *pThis, PRUnichar * *clientName);
nsresult (*GetClientIP)(IRemoteDisplayInfo *pThis, PRUnichar * *clientIP);
nsresult (*GetClientVersion)(IRemoteDisplayInfo *pThis, PRUint32 *clientVersion);
nsresult (*GetEncryptionStyle)(IRemoteDisplayInfo *pThis, PRUint32 *encryptionStyle);
};
struct IRemoteDisplayInfo
{
struct IRemoteDisplayInfo_vtbl *vtbl;
};
/* End of struct IRemoteDisplayInfo Declaration */
/* Start of struct IConsole Declaration */
#define ICONSOLE_IID_STR "0a51994b-cbc6-4686-94eb-d4e4023280e2"
#define ICONSOLE_IID { \
0x0a51994b, 0xcbc6, 0x4686, \
{ 0x94, 0xeb, 0xd4, 0xe4, 0x02, 0x32, 0x80, 0xe2 } \
}
struct IConsole_vtbl
{
struct nsISupports_vtbl nsisupports;
nsresult (*GetMachine)(IConsole *pThis, IMachine * *machine);
nsresult (*GetState)(IConsole *pThis, PRUint32 *state);
nsresult (*GetGuest)(IConsole *pThis, IGuest * *guest);
nsresult (*GetKeyboard)(IConsole *pThis, IKeyboard * *keyboard);
nsresult (*GetMouse)(IConsole *pThis, IMouse * *mouse);
nsresult (*GetDisplay)(IConsole *pThis, IDisplay * *display);
nsresult (*GetDebugger)(IConsole *pThis, IMachineDebugger * *debugger);
nsresult (*GetUSBDevices)(IConsole *pThis, PRUint32 *USBDevicesSize, IUSBDevice * **USBDevices);
nsresult (*GetRemoteUSBDevices)(IConsole *pThis, PRUint32 *remoteUSBDevicesSize, IHostUSBDevice * **remoteUSBDevices);
nsresult (*GetSharedFolders)(IConsole *pThis, PRUint32 *sharedFoldersSize, ISharedFolder * **sharedFolders);
nsresult (*GetRemoteDisplayInfo)(IConsole *pThis, IRemoteDisplayInfo * *remoteDisplayInfo);
nsresult (*PowerUp)(
IConsole *pThis,
IProgress * * progress
);
nsresult (*PowerUpPaused)(
IConsole *pThis,
IProgress * * progress
);
nsresult (*PowerDown)(
IConsole *pThis,
IProgress * * progress
);
nsresult (*Reset)(IConsole *pThis );
nsresult (*Pause)(IConsole *pThis );
nsresult (*Resume)(IConsole *pThis );
nsresult (*PowerButton)(IConsole *pThis );
nsresult (*SleepButton)(IConsole *pThis );
nsresult (*GetPowerButtonHandled)(
IConsole *pThis,
PRBool * handled
);
nsresult (*GetGuestEnteredACPIMode)(
IConsole *pThis,
PRBool * entered
);
nsresult (*SaveState)(
IConsole *pThis,
IProgress * * progress
);
nsresult (*AdoptSavedState)(
IConsole *pThis,
PRUnichar * savedStateFile
);
nsresult (*ForgetSavedState)(
IConsole *pThis,
PRBool remove
);
nsresult (*GetDeviceActivity)(
IConsole *pThis,
PRUint32 type,
PRUint32 * activity
);
nsresult (*AttachUSBDevice)(
IConsole *pThis,
PRUnichar * id
);
nsresult (*DetachUSBDevice)(
IConsole *pThis,
PRUnichar * id,
IUSBDevice * * device
);
nsresult (*FindUSBDeviceByAddress)(
IConsole *pThis,
PRUnichar * name,
IUSBDevice * * device
);
nsresult (*FindUSBDeviceById)(
IConsole *pThis,
PRUnichar * id,
IUSBDevice * * device
);
nsresult (*CreateSharedFolder)(
IConsole *pThis,
PRUnichar * name,
PRUnichar * hostPath,
PRBool writable
);
nsresult (*RemoveSharedFolder)(
IConsole *pThis,
PRUnichar * name
);
nsresult (*TakeSnapshot)(
IConsole *pThis,
PRUnichar * name,
PRUnichar * description,
IProgress * * progress
);
nsresult (*DiscardSnapshot)(
IConsole *pThis,
PRUnichar * id,
IProgress * * progress
);
nsresult (*DiscardCurrentState)(
IConsole *pThis,
IProgress * * progress
);
nsresult (*DiscardCurrentSnapshotAndState)(
IConsole *pThis,
IProgress * * progress
);
nsresult (*RegisterCallback)(
IConsole *pThis,
IConsoleCallback * callback
);
nsresult (*UnregisterCallback)(
IConsole *pThis,
IConsoleCallback * callback
);
};
struct IConsole
{
struct IConsole_vtbl *vtbl;
};
/* End of struct IConsole Declaration */
/* Start of struct IHostDVDDrive Declaration */
#define IHOSTDVDDRIVE_IID_STR "21f86694-202d-4ce4-8b05-a63ff82dbf4c"
#define IHOSTDVDDRIVE_IID { \
0x21f86694, 0x202d, 0x4ce4, \
{ 0x8b, 0x05, 0xa6, 0x3f, 0xf8, 0x2d, 0xbf, 0x4c } \
}
struct IHostDVDDrive_vtbl
{
struct nsISupports_vtbl nsisupports;
nsresult (*GetName)(IHostDVDDrive *pThis, PRUnichar * *name);
nsresult (*GetDescription)(IHostDVDDrive *pThis, PRUnichar * *description);
nsresult (*GetUdi)(IHostDVDDrive *pThis, PRUnichar * *udi);
};
struct IHostDVDDrive
{
struct IHostDVDDrive_vtbl *vtbl;
};
/* End of struct IHostDVDDrive Declaration */
/* Start of struct IHostFloppyDrive Declaration */
#define IHOSTFLOPPYDRIVE_IID_STR "3f02d604-e908-4919-9fd1-8a4afd68fc63"
#define IHOSTFLOPPYDRIVE_IID { \
0x3f02d604, 0xe908, 0x4919, \
{ 0x9f, 0xd1, 0x8a, 0x4a, 0xfd, 0x68, 0xfc, 0x63 } \
}
struct IHostFloppyDrive_vtbl
{
struct nsISupports_vtbl nsisupports;
nsresult (*GetName)(IHostFloppyDrive *pThis, PRUnichar * *name);
nsresult (*GetDescription)(IHostFloppyDrive *pThis, PRUnichar * *description);
nsresult (*GetUdi)(IHostFloppyDrive *pThis, PRUnichar * *udi);
};
struct IHostFloppyDrive
{
struct IHostFloppyDrive_vtbl *vtbl;
};
/* End of struct IHostFloppyDrive Declaration */
/* Start of struct IHostNetworkInterface Declaration */
#define IHOSTNETWORKINTERFACE_IID_STR "ce6fae58-7642-4102-b5db-c9005c2320a8"
#define IHOSTNETWORKINTERFACE_IID { \
0xce6fae58, 0x7642, 0x4102, \
{ 0xb5, 0xdb, 0xc9, 0x00, 0x5c, 0x23, 0x20, 0xa8 } \
}
struct IHostNetworkInterface_vtbl
{
struct nsISupports_vtbl nsisupports;
nsresult (*GetName)(IHostNetworkInterface *pThis, PRUnichar * *name);
nsresult (*GetId)(IHostNetworkInterface *pThis, PRUnichar * *id);
nsresult (*GetNetworkName)(IHostNetworkInterface *pThis, PRUnichar * *networkName);
nsresult (*GetDhcpEnabled)(IHostNetworkInterface *pThis, PRBool *dhcpEnabled);
nsresult (*GetIPAddress)(IHostNetworkInterface *pThis, PRUnichar * *IPAddress);
nsresult (*GetNetworkMask)(IHostNetworkInterface *pThis, PRUnichar * *networkMask);
nsresult (*GetIPV6Supported)(IHostNetworkInterface *pThis, PRBool *IPV6Supported);
nsresult (*GetIPV6Address)(IHostNetworkInterface *pThis, PRUnichar * *IPV6Address);
nsresult (*GetIPV6NetworkMaskPrefixLength)(IHostNetworkInterface *pThis, PRUint32 *IPV6NetworkMaskPrefixLength);
nsresult (*GetHardwareAddress)(IHostNetworkInterface *pThis, PRUnichar * *hardwareAddress);
nsresult (*GetMediumType)(IHostNetworkInterface *pThis, PRUint32 *mediumType);
nsresult (*GetStatus)(IHostNetworkInterface *pThis, PRUint32 *status);
nsresult (*GetInterfaceType)(IHostNetworkInterface *pThis, PRUint32 *interfaceType);
nsresult (*EnableStaticIpConfig)(
IHostNetworkInterface *pThis,
PRUnichar * IPAddress,
PRUnichar * networkMask
);
nsresult (*EnableStaticIpConfigV6)(
IHostNetworkInterface *pThis,
PRUnichar * IPV6Address,
PRUint32 IPV6NetworkMaskPrefixLength
);
nsresult (*EnableDynamicIpConfig)(IHostNetworkInterface *pThis );
nsresult (*DhcpRediscover)(IHostNetworkInterface *pThis );
};
struct IHostNetworkInterface
{
struct IHostNetworkInterface_vtbl *vtbl;
};
/* End of struct IHostNetworkInterface Declaration */
/* Start of struct IHost Declaration */
#define IHOST_IID_STR "a13b5556-5c0b-4f80-9df6-6f804f3336a1"
#define IHOST_IID { \
0xa13b5556, 0x5c0b, 0x4f80, \
{ 0x9d, 0xf6, 0x6f, 0x80, 0x4f, 0x33, 0x36, 0xa1 } \
}
struct IHost_vtbl
{
struct nsISupports_vtbl nsisupports;
nsresult (*GetDVDDrives)(IHost *pThis, PRUint32 *DVDDrivesSize, IHostDVDDrive * **DVDDrives);
nsresult (*GetFloppyDrives)(IHost *pThis, PRUint32 *floppyDrivesSize, IHostFloppyDrive * **floppyDrives);
nsresult (*GetUSBDevices)(IHost *pThis, PRUint32 *USBDevicesSize, IHostUSBDevice * **USBDevices);
nsresult (*GetUSBDeviceFilters)(IHost *pThis, PRUint32 *USBDeviceFiltersSize, IHostUSBDeviceFilter * **USBDeviceFilters);
nsresult (*GetNetworkInterfaces)(IHost *pThis, PRUint32 *networkInterfacesSize, IHostNetworkInterface * **networkInterfaces);
nsresult (*GetProcessorCount)(IHost *pThis, PRUint32 *processorCount);
nsresult (*GetProcessorOnlineCount)(IHost *pThis, PRUint32 *processorOnlineCount);
nsresult (*GetMemorySize)(IHost *pThis, PRUint32 *memorySize);
nsresult (*GetMemoryAvailable)(IHost *pThis, PRUint32 *memoryAvailable);
nsresult (*GetOperatingSystem)(IHost *pThis, PRUnichar * *operatingSystem);
nsresult (*GetOSVersion)(IHost *pThis, PRUnichar * *OSVersion);
nsresult (*GetUTCTime)(IHost *pThis, PRInt64 *UTCTime);
nsresult (*GetAcceleration3DAvailable)(IHost *pThis, PRBool *Acceleration3DAvailable);
nsresult (*GetProcessorSpeed)(
IHost *pThis,
PRUint32 cpuId,
PRUint32 * speed
);
nsresult (*GetProcessorFeature)(
IHost *pThis,
PRUint32 feature,
PRBool * supported
);
nsresult (*GetProcessorDescription)(
IHost *pThis,
PRUint32 cpuId,
PRUnichar * * description
);
nsresult (*CreateHostOnlyNetworkInterface)(
IHost *pThis,
IHostNetworkInterface * * hostInterface,
IProgress * * progress
);
nsresult (*RemoveHostOnlyNetworkInterface)(
IHost *pThis,
PRUnichar * id,
IHostNetworkInterface * * hostInterface,
IProgress * * progress
);
nsresult (*CreateUSBDeviceFilter)(
IHost *pThis,
PRUnichar * name,
IHostUSBDeviceFilter * * filter
);
nsresult (*InsertUSBDeviceFilter)(
IHost *pThis,
PRUint32 position,
IHostUSBDeviceFilter * filter
);
nsresult (*RemoveUSBDeviceFilter)(
IHost *pThis,
PRUint32 position,
IHostUSBDeviceFilter * * filter
);
nsresult (*FindHostDVDDrive)(
IHost *pThis,
PRUnichar * name,
IHostDVDDrive * * drive
);
nsresult (*FindHostFloppyDrive)(
IHost *pThis,
PRUnichar * name,
IHostFloppyDrive * * drive
);
nsresult (*FindHostNetworkInterfaceByName)(
IHost *pThis,
PRUnichar * name,
IHostNetworkInterface * * networkInterface
);
nsresult (*FindHostNetworkInterfaceById)(
IHost *pThis,
PRUnichar * id,
IHostNetworkInterface * * networkInterface
);
nsresult (*FindHostNetworkInterfacesOfType)(
IHost *pThis,
PRUint32 type,
PRUint32 *networkInterfacesSize,
IHostNetworkInterface *** networkInterfaces
);
nsresult (*FindUSBDeviceById)(
IHost *pThis,
PRUnichar * id,
IHostUSBDevice * * device
);
nsresult (*FindUSBDeviceByAddress)(
IHost *pThis,
PRUnichar * name,
IHostUSBDevice * * device
);
};
struct IHost
{
struct IHost_vtbl *vtbl;
};
/* End of struct IHost Declaration */
/* Start of struct ISystemProperties Declaration */
#define ISYSTEMPROPERTIES_IID_STR "9ca0f712-83f3-4631-b143-b75ef6568332"
#define ISYSTEMPROPERTIES_IID { \
0x9ca0f712, 0x83f3, 0x4631, \
{ 0xb1, 0x43, 0xb7, 0x5e, 0xf6, 0x56, 0x83, 0x32 } \
}
struct ISystemProperties_vtbl
{
struct nsISupports_vtbl nsisupports;
nsresult (*GetMinGuestRAM)(ISystemProperties *pThis, PRUint32 *minGuestRAM);
nsresult (*GetMaxGuestRAM)(ISystemProperties *pThis, PRUint32 *maxGuestRAM);
nsresult (*GetMinGuestVRAM)(ISystemProperties *pThis, PRUint32 *minGuestVRAM);
nsresult (*GetMaxGuestVRAM)(ISystemProperties *pThis, PRUint32 *maxGuestVRAM);
nsresult (*GetMinGuestCPUCount)(ISystemProperties *pThis, PRUint32 *minGuestCPUCount);
nsresult (*GetMaxGuestCPUCount)(ISystemProperties *pThis, PRUint32 *maxGuestCPUCount);
nsresult (*GetMaxVDISize)(ISystemProperties *pThis, PRUint64 *maxVDISize);
nsresult (*GetNetworkAdapterCount)(ISystemProperties *pThis, PRUint32 *networkAdapterCount);
nsresult (*GetSerialPortCount)(ISystemProperties *pThis, PRUint32 *serialPortCount);
nsresult (*GetParallelPortCount)(ISystemProperties *pThis, PRUint32 *parallelPortCount);
nsresult (*GetMaxBootPosition)(ISystemProperties *pThis, PRUint32 *maxBootPosition);
nsresult (*GetDefaultMachineFolder)(ISystemProperties *pThis, PRUnichar * *defaultMachineFolder);
nsresult (*SetDefaultMachineFolder)(ISystemProperties *pThis, PRUnichar * defaultMachineFolder);
nsresult (*GetDefaultHardDiskFolder)(ISystemProperties *pThis, PRUnichar * *defaultHardDiskFolder);
nsresult (*SetDefaultHardDiskFolder)(ISystemProperties *pThis, PRUnichar * defaultHardDiskFolder);
nsresult (*GetHardDiskFormats)(ISystemProperties *pThis, PRUint32 *hardDiskFormatsSize, IHardDiskFormat * **hardDiskFormats);
nsresult (*GetDefaultHardDiskFormat)(ISystemProperties *pThis, PRUnichar * *defaultHardDiskFormat);
nsresult (*SetDefaultHardDiskFormat)(ISystemProperties *pThis, PRUnichar * defaultHardDiskFormat);
nsresult (*GetRemoteDisplayAuthLibrary)(ISystemProperties *pThis, PRUnichar * *remoteDisplayAuthLibrary);
nsresult (*SetRemoteDisplayAuthLibrary)(ISystemProperties *pThis, PRUnichar * remoteDisplayAuthLibrary);
nsresult (*GetWebServiceAuthLibrary)(ISystemProperties *pThis, PRUnichar * *webServiceAuthLibrary);
nsresult (*SetWebServiceAuthLibrary)(ISystemProperties *pThis, PRUnichar * webServiceAuthLibrary);
nsresult (*GetLogHistoryCount)(ISystemProperties *pThis, PRUint32 *LogHistoryCount);
nsresult (*SetLogHistoryCount)(ISystemProperties *pThis, PRUint32 LogHistoryCount);
nsresult (*GetDefaultAudioDriver)(ISystemProperties *pThis, PRUint32 *defaultAudioDriver);
};
struct ISystemProperties
{
struct ISystemProperties_vtbl *vtbl;
};
/* End of struct ISystemProperties Declaration */
/* Start of struct IGuestOSType Declaration */
#define IGUESTOSTYPE_IID_STR "cfe9e64c-4430-435b-9e7c-e3d8e417bd58"
#define IGUESTOSTYPE_IID { \
0xcfe9e64c, 0x4430, 0x435b, \
{ 0x9e, 0x7c, 0xe3, 0xd8, 0xe4, 0x17, 0xbd, 0x58 } \
}
struct IGuestOSType_vtbl
{
struct nsISupports_vtbl nsisupports;
nsresult (*GetFamilyId)(IGuestOSType *pThis, PRUnichar * *familyId);
nsresult (*GetFamilyDescription)(IGuestOSType *pThis, PRUnichar * *familyDescription);
nsresult (*GetId)(IGuestOSType *pThis, PRUnichar * *id);
nsresult (*GetDescription)(IGuestOSType *pThis, PRUnichar * *description);
nsresult (*GetIs64Bit)(IGuestOSType *pThis, PRBool *is64Bit);
nsresult (*GetRecommendedIOAPIC)(IGuestOSType *pThis, PRBool *recommendedIOAPIC);
nsresult (*GetRecommendedVirtEx)(IGuestOSType *pThis, PRBool *recommendedVirtEx);
nsresult (*GetRecommendedRAM)(IGuestOSType *pThis, PRUint32 *recommendedRAM);
nsresult (*GetRecommendedVRAM)(IGuestOSType *pThis, PRUint32 *recommendedVRAM);
nsresult (*GetRecommendedHDD)(IGuestOSType *pThis, PRUint32 *recommendedHDD);
nsresult (*GetAdapterType)(IGuestOSType *pThis, PRUint32 *adapterType);
};
struct IGuestOSType
{
struct IGuestOSType_vtbl *vtbl;
};
/* End of struct IGuestOSType Declaration */
/* Start of struct IGuest Declaration */
#define IGUEST_IID_STR "d8556fca-81bc-12af-fca3-365528fa38ca"
#define IGUEST_IID { \
0xd8556fca, 0x81bc, 0x12af, \
{ 0xfc, 0xa3, 0x36, 0x55, 0x28, 0xfa, 0x38, 0xca } \
}
struct IGuest_vtbl
{
struct nsISupports_vtbl nsisupports;
nsresult (*GetOSTypeId)(IGuest *pThis, PRUnichar * *OSTypeId);
nsresult (*GetAdditionsActive)(IGuest *pThis, PRBool *additionsActive);
nsresult (*GetAdditionsVersion)(IGuest *pThis, PRUnichar * *additionsVersion);
nsresult (*GetSupportsSeamless)(IGuest *pThis, PRBool *supportsSeamless);
nsresult (*GetSupportsGraphics)(IGuest *pThis, PRBool *supportsGraphics);
nsresult (*GetMemoryBalloonSize)(IGuest *pThis, PRUint32 *memoryBalloonSize);
nsresult (*SetMemoryBalloonSize)(IGuest *pThis, PRUint32 memoryBalloonSize);
nsresult (*GetStatisticsUpdateInterval)(IGuest *pThis, PRUint32 *statisticsUpdateInterval);
nsresult (*SetStatisticsUpdateInterval)(IGuest *pThis, PRUint32 statisticsUpdateInterval);
nsresult (*SetCredentials)(
IGuest *pThis,
PRUnichar * userName,
PRUnichar * password,
PRUnichar * domain,
PRBool allowInteractiveLogon
);
nsresult (*GetStatistic)(
IGuest *pThis,
PRUint32 cpuId,
PRUint32 statistic,
PRUint32 * statVal
);
};
struct IGuest
{
struct IGuest_vtbl *vtbl;
};
/* End of struct IGuest Declaration */
/* Start of struct IProgress Declaration */
#define IPROGRESS_IID_STR "6fcd0198-7fc5-4c53-8c37-653ac76854b5"
#define IPROGRESS_IID { \
0x6fcd0198, 0x7fc5, 0x4c53, \
{ 0x8c, 0x37, 0x65, 0x3a, 0xc7, 0x68, 0x54, 0xb5 } \
}
struct IProgress_vtbl
{
struct nsISupports_vtbl nsisupports;
nsresult (*GetId)(IProgress *pThis, PRUnichar * *id);
nsresult (*GetDescription)(IProgress *pThis, PRUnichar * *description);
nsresult (*GetInitiator)(IProgress *pThis, nsISupports * *initiator);
nsresult (*GetCancelable)(IProgress *pThis, PRBool *cancelable);
nsresult (*GetPercent)(IProgress *pThis, PRUint32 *percent);
nsresult (*GetTimeRemaining)(IProgress *pThis, PRInt32 *timeRemaining);
nsresult (*GetCompleted)(IProgress *pThis, PRBool *completed);
nsresult (*GetCanceled)(IProgress *pThis, PRBool *canceled);
nsresult (*GetResultCode)(IProgress *pThis, PRInt32 *resultCode);
nsresult (*GetErrorInfo)(IProgress *pThis, IVirtualBoxErrorInfo * *errorInfo);
nsresult (*GetOperationCount)(IProgress *pThis, PRUint32 *operationCount);
nsresult (*GetOperation)(IProgress *pThis, PRUint32 *operation);
nsresult (*GetOperationDescription)(IProgress *pThis, PRUnichar * *operationDescription);
nsresult (*GetOperationPercent)(IProgress *pThis, PRUint32 *operationPercent);
nsresult (*WaitForCompletion)(
IProgress *pThis,
PRInt32 timeout
);
nsresult (*WaitForOperationCompletion)(
IProgress *pThis,
PRUint32 operation,
PRInt32 timeout
);
nsresult (*Cancel)(IProgress *pThis );
};
struct IProgress
{
struct IProgress_vtbl *vtbl;
};
/* End of struct IProgress Declaration */
/* Start of struct ISnapshot Declaration */
#define ISNAPSHOT_IID_STR "1a2d0551-58a4-4107-857e-ef414fc42ffc"
#define ISNAPSHOT_IID { \
0x1a2d0551, 0x58a4, 0x4107, \
{ 0x85, 0x7e, 0xef, 0x41, 0x4f, 0xc4, 0x2f, 0xfc } \
}
struct ISnapshot_vtbl
{
struct nsISupports_vtbl nsisupports;
nsresult (*GetId)(ISnapshot *pThis, PRUnichar * *id);
nsresult (*GetName)(ISnapshot *pThis, PRUnichar * *name);
nsresult (*SetName)(ISnapshot *pThis, PRUnichar * name);
nsresult (*GetDescription)(ISnapshot *pThis, PRUnichar * *description);
nsresult (*SetDescription)(ISnapshot *pThis, PRUnichar * description);
nsresult (*GetTimeStamp)(ISnapshot *pThis, PRInt64 *timeStamp);
nsresult (*GetOnline)(ISnapshot *pThis, PRBool *online);
nsresult (*GetMachine)(ISnapshot *pThis, IMachine * *machine);
nsresult (*GetParent)(ISnapshot *pThis, ISnapshot * *parent);
nsresult (*GetChildren)(ISnapshot *pThis, PRUint32 *childrenSize, ISnapshot * **children);
};
struct ISnapshot
{
struct ISnapshot_vtbl *vtbl;
};
/* End of struct ISnapshot Declaration */
/* Start of struct IMedium Declaration */
#define IMEDIUM_IID_STR "f585787c-7728-40f6-853a-13705426e936"
#define IMEDIUM_IID { \
0xf585787c, 0x7728, 0x40f6, \
{ 0x85, 0x3a, 0x13, 0x70, 0x54, 0x26, 0xe9, 0x36 } \
}
struct IMedium_vtbl
{
struct nsISupports_vtbl nsisupports;
nsresult (*GetId)(IMedium *pThis, PRUnichar * *id);
nsresult (*GetDescription)(IMedium *pThis, PRUnichar * *description);
nsresult (*SetDescription)(IMedium *pThis, PRUnichar * description);
nsresult (*GetState)(IMedium *pThis, PRUint32 *state);
nsresult (*GetLocation)(IMedium *pThis, PRUnichar * *location);
nsresult (*SetLocation)(IMedium *pThis, PRUnichar * location);
nsresult (*GetName)(IMedium *pThis, PRUnichar * *name);
nsresult (*GetSize)(IMedium *pThis, PRUint64 *size);
nsresult (*GetLastAccessError)(IMedium *pThis, PRUnichar * *lastAccessError);
nsresult (*GetMachineIds)(IMedium *pThis, PRUint32 *machineIdsSize, PRUnichar * **machineIds);
nsresult (*GetSnapshotIds)(
IMedium *pThis,
PRUnichar * machineId,
PRUint32 *snapshotIdsSize,
PRUnichar *** snapshotIds
);
nsresult (*LockRead)(
IMedium *pThis,
PRUint32 * state
);
nsresult (*UnlockRead)(
IMedium *pThis,
PRUint32 * state
);
nsresult (*LockWrite)(
IMedium *pThis,
PRUint32 * state
);
nsresult (*UnlockWrite)(
IMedium *pThis,
PRUint32 * state
);
nsresult (*Close)(IMedium *pThis );
};
struct IMedium
{
struct IMedium_vtbl *vtbl;
};
/* End of struct IMedium Declaration */
/* Start of struct IHardDiskAttachment Declaration */
#define IHARDDISKATTACHMENT_IID_STR "b1dd04bb-93c0-4ad3-a9cf-82316e595836"
#define IHARDDISKATTACHMENT_IID { \
0xb1dd04bb, 0x93c0, 0x4ad3, \
{ 0xa9, 0xcf, 0x82, 0x31, 0x6e, 0x59, 0x58, 0x36 } \
}
struct IHardDiskAttachment_vtbl
{
struct nsISupports_vtbl nsisupports;
nsresult (*GetHardDisk)(IHardDiskAttachment *pThis, IHardDisk * *hardDisk);
nsresult (*GetController)(IHardDiskAttachment *pThis, PRUnichar * *controller);
nsresult (*GetPort)(IHardDiskAttachment *pThis, PRInt32 *port);
nsresult (*GetDevice)(IHardDiskAttachment *pThis, PRInt32 *device);
};
struct IHardDiskAttachment
{
struct IHardDiskAttachment_vtbl *vtbl;
};
/* End of struct IHardDiskAttachment Declaration */
/* Start of struct IHardDisk Declaration */
#define IHARDDISK_IID_STR "62551115-83b8-4d20-925f-79e9d3c00f96"
#define IHARDDISK_IID { \
0x62551115, 0x83b8, 0x4d20, \
{ 0x92, 0x5f, 0x79, 0xe9, 0xd3, 0xc0, 0x0f, 0x96 } \
}
struct IHardDisk_vtbl
{
struct IMedium_vtbl imedium;
nsresult (*GetFormat)(IHardDisk *pThis, PRUnichar * *format);
nsresult (*GetType)(IHardDisk *pThis, PRUint32 *type);
nsresult (*SetType)(IHardDisk *pThis, PRUint32 type);
nsresult (*GetParent)(IHardDisk *pThis, IHardDisk * *parent);
nsresult (*GetChildren)(IHardDisk *pThis, PRUint32 *childrenSize, IHardDisk * **children);
nsresult (*GetRoot)(IHardDisk *pThis, IHardDisk * *root);
nsresult (*GetReadOnly)(IHardDisk *pThis, PRBool *readOnly);
nsresult (*GetLogicalSize)(IHardDisk *pThis, PRUint64 *logicalSize);
nsresult (*GetAutoReset)(IHardDisk *pThis, PRBool *autoReset);
nsresult (*SetAutoReset)(IHardDisk *pThis, PRBool autoReset);
nsresult (*GetProperty)(
IHardDisk *pThis,
PRUnichar * name,
PRUnichar * * value
);
nsresult (*SetProperty)(
IHardDisk *pThis,
PRUnichar * name,
PRUnichar * value
);
nsresult (*GetProperties)(
IHardDisk *pThis,
PRUnichar * names,
PRUint32 *returnNamesSize,
PRUnichar *** returnNames,
PRUint32 *returnValuesSize,
PRUnichar *** returnValues
);
nsresult (*SetProperties)(
IHardDisk *pThis,
PRUint32 namesSize,
PRUnichar ** names,
PRUint32 valuesSize,
PRUnichar ** values
);
nsresult (*CreateBaseStorage)(
IHardDisk *pThis,
PRUint64 logicalSize,
PRUint32 variant,
IProgress * * progress
);
nsresult (*DeleteStorage)(
IHardDisk *pThis,
IProgress * * progress
);
nsresult (*CreateDiffStorage)(
IHardDisk *pThis,
IHardDisk * target,
PRUint32 variant,
IProgress * * progress
);
nsresult (*MergeTo)(
IHardDisk *pThis,
PRUnichar * targetId,
IProgress * * progress
);
nsresult (*CloneTo)(
IHardDisk *pThis,
IHardDisk * target,
PRUint32 variant,
IHardDisk * parent,
IProgress * * progress
);
nsresult (*Compact)(
IHardDisk *pThis,
IProgress * * progress
);
nsresult (*Reset)(
IHardDisk *pThis,
IProgress * * progress
);
};
struct IHardDisk
{
struct IHardDisk_vtbl *vtbl;
};
/* End of struct IHardDisk Declaration */
/* Start of struct IHardDiskFormat Declaration */
#define IHARDDISKFORMAT_IID_STR "7f3ba790-3a0b-4a8a-bac2-bb50150123c5"
#define IHARDDISKFORMAT_IID { \
0x7f3ba790, 0x3a0b, 0x4a8a, \
{ 0xba, 0xc2, 0xbb, 0x50, 0x15, 0x01, 0x23, 0xc5 } \
}
struct IHardDiskFormat_vtbl
{
struct nsISupports_vtbl nsisupports;
nsresult (*GetId)(IHardDiskFormat *pThis, PRUnichar * *id);
nsresult (*GetName)(IHardDiskFormat *pThis, PRUnichar * *name);
nsresult (*GetFileExtensions)(IHardDiskFormat *pThis, PRUint32 *fileExtensionsSize, PRUnichar * **fileExtensions);
nsresult (*GetCapabilities)(IHardDiskFormat *pThis, PRUint32 *capabilities);
nsresult (*DescribeProperties)(
IHardDiskFormat *pThis,
PRUint32 *namesSize,
PRUnichar *** names,
PRUint32 *descriptionSize,
PRUnichar *** description,
PRUint32 *typesSize,
PRUint32* types,
PRUint32 *flagsSize,
PRUint32* flags,
PRUint32 *defaultsSize,
PRUnichar *** defaults
);
};
struct IHardDiskFormat
{
struct IHardDiskFormat_vtbl *vtbl;
};
/* End of struct IHardDiskFormat Declaration */
/* Start of struct IFloppyImage Declaration */
#define IFLOPPYIMAGE_IID_STR "faa6101f-078c-4b3a-ab75-75670c8170b3"
#define IFLOPPYIMAGE_IID { \
0xfaa6101f, 0x078c, 0x4b3a, \
{ 0xab, 0x75, 0x75, 0x67, 0x0c, 0x81, 0x70, 0xb3 } \
}
struct IFloppyImage_vtbl
{
struct IMedium_vtbl imedium;
};
struct IFloppyImage
{
struct IFloppyImage_vtbl *vtbl;
};
/* End of struct IFloppyImage Declaration */
/* Start of struct IDVDImage Declaration */
#define IDVDIMAGE_IID_STR "b1f90bbb-e8a9-4484-9af1-3638e943f763"
#define IDVDIMAGE_IID { \
0xb1f90bbb, 0xe8a9, 0x4484, \
{ 0x9a, 0xf1, 0x36, 0x38, 0xe9, 0x43, 0xf7, 0x63 } \
}
struct IDVDImage_vtbl
{
struct IMedium_vtbl imedium;
};
struct IDVDImage
{
struct IDVDImage_vtbl *vtbl;
};
/* End of struct IDVDImage Declaration */
/* Start of struct IDVDDrive Declaration */
#define IDVDDRIVE_IID_STR "156944d1-4c6d-4812-8f12-ab3890767ab4"
#define IDVDDRIVE_IID { \
0x156944d1, 0x4c6d, 0x4812, \
{ 0x8f, 0x12, 0xab, 0x38, 0x90, 0x76, 0x7a, 0xb4 } \
}
struct IDVDDrive_vtbl
{
struct nsISupports_vtbl nsisupports;
nsresult (*GetState)(IDVDDrive *pThis, PRUint32 *state);
nsresult (*GetPassthrough)(IDVDDrive *pThis, PRBool *passthrough);
nsresult (*SetPassthrough)(IDVDDrive *pThis, PRBool passthrough);
nsresult (*MountImage)(
IDVDDrive *pThis,
PRUnichar * imageId
);
nsresult (*CaptureHostDrive)(
IDVDDrive *pThis,
IHostDVDDrive * drive
);
nsresult (*Unmount)(IDVDDrive *pThis );
nsresult (*GetImage)(
IDVDDrive *pThis,
IDVDImage * * image
);
nsresult (*GetHostDrive)(
IDVDDrive *pThis,
IHostDVDDrive * * drive
);
};
struct IDVDDrive
{
struct IDVDDrive_vtbl *vtbl;
};
/* End of struct IDVDDrive Declaration */
/* Start of struct IFloppyDrive Declaration */
#define IFLOPPYDRIVE_IID_STR "a8676d38-5cf0-4b53-85b1-aa693611ab86"
#define IFLOPPYDRIVE_IID { \
0xa8676d38, 0x5cf0, 0x4b53, \
{ 0x85, 0xb1, 0xaa, 0x69, 0x36, 0x11, 0xab, 0x86 } \
}
struct IFloppyDrive_vtbl
{
struct nsISupports_vtbl nsisupports;
nsresult (*GetEnabled)(IFloppyDrive *pThis, PRBool *enabled);
nsresult (*SetEnabled)(IFloppyDrive *pThis, PRBool enabled);
nsresult (*GetState)(IFloppyDrive *pThis, PRUint32 *state);
nsresult (*MountImage)(
IFloppyDrive *pThis,
PRUnichar * imageId
);
nsresult (*CaptureHostDrive)(
IFloppyDrive *pThis,
IHostFloppyDrive * drive
);
nsresult (*Unmount)(IFloppyDrive *pThis );
nsresult (*GetImage)(
IFloppyDrive *pThis,
IFloppyImage * * image
);
nsresult (*GetHostDrive)(
IFloppyDrive *pThis,
IHostFloppyDrive * * drive
);
};
struct IFloppyDrive
{
struct IFloppyDrive_vtbl *vtbl;
};
/* End of struct IFloppyDrive Declaration */
/* Start of struct IKeyboard Declaration */
#define IKEYBOARD_IID_STR "2d1a531b-4c6e-49cc-8af6-5c857b78b5d7"
#define IKEYBOARD_IID { \
0x2d1a531b, 0x4c6e, 0x49cc, \
{ 0x8a, 0xf6, 0x5c, 0x85, 0x7b, 0x78, 0xb5, 0xd7 } \
}
struct IKeyboard_vtbl
{
struct nsISupports_vtbl nsisupports;
nsresult (*PutScancode)(
IKeyboard *pThis,
PRInt32 scancode
);
nsresult (*PutScancodes)(
IKeyboard *pThis,
PRUint32 scancodesSize,
PRInt32* scancodes,
PRUint32 * codesStored
);
nsresult (*PutCAD)(IKeyboard *pThis );
};
struct IKeyboard
{
struct IKeyboard_vtbl *vtbl;
};
/* End of struct IKeyboard Declaration */
/* Start of struct IMouse Declaration */
#define IMOUSE_IID_STR "FD443EC1-0006-4F5B-9282-D72760A66916"
#define IMOUSE_IID { \
0xFD443EC1, 0x0006, 0x4F5B, \
{ 0x92, 0x82, 0xD7, 0x27, 0x60, 0xA6, 0x69, 0x16 } \
}
struct IMouse_vtbl
{
struct nsISupports_vtbl nsisupports;
nsresult (*GetAbsoluteSupported)(IMouse *pThis, PRBool *absoluteSupported);
nsresult (*PutMouseEvent)(
IMouse *pThis,
PRInt32 dx,
PRInt32 dy,
PRInt32 dz,
PRInt32 buttonState
);
nsresult (*PutMouseEventAbsolute)(
IMouse *pThis,
PRInt32 x,
PRInt32 y,
PRInt32 dz,
PRInt32 buttonState
);
};
struct IMouse
{
struct IMouse_vtbl *vtbl;
};
/* End of struct IMouse Declaration */
/* Start of struct IFramebuffer Declaration */
#define IFRAMEBUFFER_IID_STR "b7ed347a-5765-40a0-ae1c-f543eb4ddeaf"
#define IFRAMEBUFFER_IID { \
0xb7ed347a, 0x5765, 0x40a0, \
{ 0xae, 0x1c, 0xf5, 0x43, 0xeb, 0x4d, 0xde, 0xaf } \
}
struct IFramebuffer_vtbl
{
struct nsISupports_vtbl nsisupports;
nsresult (*GetAddress)(IFramebuffer *pThis, PRUint8 * *address);
nsresult (*GetWidth)(IFramebuffer *pThis, PRUint32 *width);
nsresult (*GetHeight)(IFramebuffer *pThis, PRUint32 *height);
nsresult (*GetBitsPerPixel)(IFramebuffer *pThis, PRUint32 *bitsPerPixel);
nsresult (*GetBytesPerLine)(IFramebuffer *pThis, PRUint32 *bytesPerLine);
nsresult (*GetPixelFormat)(IFramebuffer *pThis, PRUint32 *pixelFormat);
nsresult (*GetUsesGuestVRAM)(IFramebuffer *pThis, PRBool *usesGuestVRAM);
nsresult (*GetHeightReduction)(IFramebuffer *pThis, PRUint32 *heightReduction);
nsresult (*GetOverlay)(IFramebuffer *pThis, IFramebufferOverlay * *overlay);
nsresult (*GetWinId)(IFramebuffer *pThis, PRUint64 *winId);
nsresult (*Lock)(IFramebuffer *pThis );
nsresult (*Unlock)(IFramebuffer *pThis );
nsresult (*NotifyUpdate)(
IFramebuffer *pThis,
PRUint32 x,
PRUint32 y,
PRUint32 width,
PRUint32 height
);
nsresult (*RequestResize)(
IFramebuffer *pThis,
PRUint32 screenId,
PRUint32 pixelFormat,
PRUint8 * VRAM,
PRUint32 bitsPerPixel,
PRUint32 bytesPerLine,
PRUint32 width,
PRUint32 height,
PRBool * finished
);
nsresult (*VideoModeSupported)(
IFramebuffer *pThis,
PRUint32 width,
PRUint32 height,
PRUint32 bpp,
PRBool * supported
);
nsresult (*GetVisibleRegion)(
IFramebuffer *pThis,
PRUint8 * rectangles,
PRUint32 count,
PRUint32 * countCopied
);
nsresult (*SetVisibleRegion)(
IFramebuffer *pThis,
PRUint8 * rectangles,
PRUint32 count
);
nsresult (*ProcessVHWACommand)(
IFramebuffer *pThis,
PRUint8 * command
);
};
struct IFramebuffer
{
struct IFramebuffer_vtbl *vtbl;
};
/* End of struct IFramebuffer Declaration */
/* Start of struct IFramebufferOverlay Declaration */
#define IFRAMEBUFFEROVERLAY_IID_STR "0bcc1c7e-e415-47d2-bfdb-e4c705fb0f47"
#define IFRAMEBUFFEROVERLAY_IID { \
0x0bcc1c7e, 0xe415, 0x47d2, \
{ 0xbf, 0xdb, 0xe4, 0xc7, 0x05, 0xfb, 0x0f, 0x47 } \
}
struct IFramebufferOverlay_vtbl
{
struct IFramebuffer_vtbl iframebuffer;
nsresult (*GetX)(IFramebufferOverlay *pThis, PRUint32 *x);
nsresult (*GetY)(IFramebufferOverlay *pThis, PRUint32 *y);
nsresult (*GetVisible)(IFramebufferOverlay *pThis, PRBool *visible);
nsresult (*SetVisible)(IFramebufferOverlay *pThis, PRBool visible);
nsresult (*GetAlpha)(IFramebufferOverlay *pThis, PRUint32 *alpha);
nsresult (*SetAlpha)(IFramebufferOverlay *pThis, PRUint32 alpha);
nsresult (*Move)(
IFramebufferOverlay *pThis,
PRUint32 x,
PRUint32 y
);
};
struct IFramebufferOverlay
{
struct IFramebufferOverlay_vtbl *vtbl;
};
/* End of struct IFramebufferOverlay Declaration */
/* Start of struct IDisplay Declaration */
#define IDISPLAY_IID_STR "26881797-bc98-444d-ac69-820633b93ec7"
#define IDISPLAY_IID { \
0x26881797, 0xbc98, 0x444d, \
{ 0xac, 0x69, 0x82, 0x06, 0x33, 0xb9, 0x3e, 0xc7 } \
}
struct IDisplay_vtbl
{
struct nsISupports_vtbl nsisupports;
nsresult (*GetWidth)(IDisplay *pThis, PRUint32 *width);
nsresult (*GetHeight)(IDisplay *pThis, PRUint32 *height);
nsresult (*GetBitsPerPixel)(IDisplay *pThis, PRUint32 *bitsPerPixel);
nsresult (*SetFramebuffer)(
IDisplay *pThis,
PRUint32 screenId,
IFramebuffer * framebuffer
);
nsresult (*GetFramebuffer)(
IDisplay *pThis,
PRUint32 screenId,
IFramebuffer * * framebuffer,
PRInt32 * xOrigin,
PRInt32 * yOrigin
);
nsresult (*SetVideoModeHint)(
IDisplay *pThis,
PRUint32 width,
PRUint32 height,
PRUint32 bitsPerPixel,
PRUint32 display
);
nsresult (*SetSeamlessMode)(
IDisplay *pThis,
PRBool enabled
);
nsresult (*TakeScreenShot)(
IDisplay *pThis,
PRUint8 * address,
PRUint32 width,
PRUint32 height
);
nsresult (*TakeScreenShotSlow)(
IDisplay *pThis,
PRUint32 width,
PRUint32 height,
PRUint32 *screenDataSize,
PRUint8** screenData
);
nsresult (*DrawToScreen)(
IDisplay *pThis,
PRUint8 * address,
PRUint32 x,
PRUint32 y,
PRUint32 width,
PRUint32 height
);
nsresult (*InvalidateAndUpdate)(IDisplay *pThis );
nsresult (*ResizeCompleted)(
IDisplay *pThis,
PRUint32 screenId
);
nsresult (*UpdateCompleted)(IDisplay *pThis );
nsresult (*CompleteVHWACommand)(
IDisplay *pThis,
PRUint8 * command
);
};
struct IDisplay
{
struct IDisplay_vtbl *vtbl;
};
/* End of struct IDisplay Declaration */
/* Start of struct INetworkAdapter Declaration */
#define INETWORKADAPTER_IID_STR "65607a27-2b73-4d43-b4cc-0ba2c817fbde"
#define INETWORKADAPTER_IID { \
0x65607a27, 0x2b73, 0x4d43, \
{ 0xb4, 0xcc, 0x0b, 0xa2, 0xc8, 0x17, 0xfb, 0xde } \
}
struct INetworkAdapter_vtbl
{
struct nsISupports_vtbl nsisupports;
nsresult (*GetAdapterType)(INetworkAdapter *pThis, PRUint32 *adapterType);
nsresult (*SetAdapterType)(INetworkAdapter *pThis, PRUint32 adapterType);
nsresult (*GetSlot)(INetworkAdapter *pThis, PRUint32 *slot);
nsresult (*GetEnabled)(INetworkAdapter *pThis, PRBool *enabled);
nsresult (*SetEnabled)(INetworkAdapter *pThis, PRBool enabled);
nsresult (*GetMACAddress)(INetworkAdapter *pThis, PRUnichar * *MACAddress);
nsresult (*SetMACAddress)(INetworkAdapter *pThis, PRUnichar * MACAddress);
nsresult (*GetAttachmentType)(INetworkAdapter *pThis, PRUint32 *attachmentType);
nsresult (*GetHostInterface)(INetworkAdapter *pThis, PRUnichar * *hostInterface);
nsresult (*SetHostInterface)(INetworkAdapter *pThis, PRUnichar * hostInterface);
nsresult (*GetInternalNetwork)(INetworkAdapter *pThis, PRUnichar * *internalNetwork);
nsresult (*SetInternalNetwork)(INetworkAdapter *pThis, PRUnichar * internalNetwork);
nsresult (*GetNATNetwork)(INetworkAdapter *pThis, PRUnichar * *NATNetwork);
nsresult (*SetNATNetwork)(INetworkAdapter *pThis, PRUnichar * NATNetwork);
nsresult (*GetCableConnected)(INetworkAdapter *pThis, PRBool *cableConnected);
nsresult (*SetCableConnected)(INetworkAdapter *pThis, PRBool cableConnected);
nsresult (*GetLineSpeed)(INetworkAdapter *pThis, PRUint32 *lineSpeed);
nsresult (*SetLineSpeed)(INetworkAdapter *pThis, PRUint32 lineSpeed);
nsresult (*GetTraceEnabled)(INetworkAdapter *pThis, PRBool *traceEnabled);
nsresult (*SetTraceEnabled)(INetworkAdapter *pThis, PRBool traceEnabled);
nsresult (*GetTraceFile)(INetworkAdapter *pThis, PRUnichar * *traceFile);
nsresult (*SetTraceFile)(INetworkAdapter *pThis, PRUnichar * traceFile);
nsresult (*AttachToNAT)(INetworkAdapter *pThis );
nsresult (*AttachToBridgedInterface)(INetworkAdapter *pThis );
nsresult (*AttachToInternalNetwork)(INetworkAdapter *pThis );
nsresult (*AttachToHostOnlyInterface)(INetworkAdapter *pThis );
nsresult (*Detach)(INetworkAdapter *pThis );
};
struct INetworkAdapter
{
struct INetworkAdapter_vtbl *vtbl;
};
/* End of struct INetworkAdapter Declaration */
/* Start of struct ISerialPort Declaration */
#define ISERIALPORT_IID_STR "937f6970-5103-4745-b78e-d28dcf1479a8"
#define ISERIALPORT_IID { \
0x937f6970, 0x5103, 0x4745, \
{ 0xb7, 0x8e, 0xd2, 0x8d, 0xcf, 0x14, 0x79, 0xa8 } \
}
struct ISerialPort_vtbl
{
struct nsISupports_vtbl nsisupports;
nsresult (*GetSlot)(ISerialPort *pThis, PRUint32 *slot);
nsresult (*GetEnabled)(ISerialPort *pThis, PRBool *enabled);
nsresult (*SetEnabled)(ISerialPort *pThis, PRBool enabled);
nsresult (*GetIOBase)(ISerialPort *pThis, PRUint32 *IOBase);
nsresult (*SetIOBase)(ISerialPort *pThis, PRUint32 IOBase);
nsresult (*GetIRQ)(ISerialPort *pThis, PRUint32 *IRQ);
nsresult (*SetIRQ)(ISerialPort *pThis, PRUint32 IRQ);
nsresult (*GetHostMode)(ISerialPort *pThis, PRUint32 *hostMode);
nsresult (*SetHostMode)(ISerialPort *pThis, PRUint32 hostMode);
nsresult (*GetServer)(ISerialPort *pThis, PRBool *server);
nsresult (*SetServer)(ISerialPort *pThis, PRBool server);
nsresult (*GetPath)(ISerialPort *pThis, PRUnichar * *path);
nsresult (*SetPath)(ISerialPort *pThis, PRUnichar * path);
};
struct ISerialPort
{
struct ISerialPort_vtbl *vtbl;
};
/* End of struct ISerialPort Declaration */
/* Start of struct IParallelPort Declaration */
#define IPARALLELPORT_IID_STR "0c925f06-dd10-4b77-8de8-294d738c3214"
#define IPARALLELPORT_IID { \
0x0c925f06, 0xdd10, 0x4b77, \
{ 0x8d, 0xe8, 0x29, 0x4d, 0x73, 0x8c, 0x32, 0x14 } \
}
struct IParallelPort_vtbl
{
struct nsISupports_vtbl nsisupports;
nsresult (*GetSlot)(IParallelPort *pThis, PRUint32 *slot);
nsresult (*GetEnabled)(IParallelPort *pThis, PRBool *enabled);
nsresult (*SetEnabled)(IParallelPort *pThis, PRBool enabled);
nsresult (*GetIOBase)(IParallelPort *pThis, PRUint32 *IOBase);
nsresult (*SetIOBase)(IParallelPort *pThis, PRUint32 IOBase);
nsresult (*GetIRQ)(IParallelPort *pThis, PRUint32 *IRQ);
nsresult (*SetIRQ)(IParallelPort *pThis, PRUint32 IRQ);
nsresult (*GetPath)(IParallelPort *pThis, PRUnichar * *path);
nsresult (*SetPath)(IParallelPort *pThis, PRUnichar * path);
};
struct IParallelPort
{
struct IParallelPort_vtbl *vtbl;
};
/* End of struct IParallelPort Declaration */
/* Start of struct IMachineDebugger Declaration */
#define IMACHINEDEBUGGER_IID_STR "b0b2a2dd-0627-4502-91c2-ddc5e77609e0"
#define IMACHINEDEBUGGER_IID { \
0xb0b2a2dd, 0x0627, 0x4502, \
{ 0x91, 0xc2, 0xdd, 0xc5, 0xe7, 0x76, 0x09, 0xe0 } \
}
struct IMachineDebugger_vtbl
{
struct nsISupports_vtbl nsisupports;
nsresult (*GetSinglestep)(IMachineDebugger *pThis, PRBool *singlestep);
nsresult (*SetSinglestep)(IMachineDebugger *pThis, PRBool singlestep);
nsresult (*GetRecompileUser)(IMachineDebugger *pThis, PRBool *recompileUser);
nsresult (*SetRecompileUser)(IMachineDebugger *pThis, PRBool recompileUser);
nsresult (*GetRecompileSupervisor)(IMachineDebugger *pThis, PRBool *recompileSupervisor);
nsresult (*SetRecompileSupervisor)(IMachineDebugger *pThis, PRBool recompileSupervisor);
nsresult (*GetPATMEnabled)(IMachineDebugger *pThis, PRBool *PATMEnabled);
nsresult (*SetPATMEnabled)(IMachineDebugger *pThis, PRBool PATMEnabled);
nsresult (*GetCSAMEnabled)(IMachineDebugger *pThis, PRBool *CSAMEnabled);
nsresult (*SetCSAMEnabled)(IMachineDebugger *pThis, PRBool CSAMEnabled);
nsresult (*GetLogEnabled)(IMachineDebugger *pThis, PRBool *logEnabled);
nsresult (*SetLogEnabled)(IMachineDebugger *pThis, PRBool logEnabled);
nsresult (*GetHWVirtExEnabled)(IMachineDebugger *pThis, PRBool *HWVirtExEnabled);
nsresult (*GetHWVirtExNestedPagingEnabled)(IMachineDebugger *pThis, PRBool *HWVirtExNestedPagingEnabled);
nsresult (*GetHWVirtExVPIDEnabled)(IMachineDebugger *pThis, PRBool *HWVirtExVPIDEnabled);
nsresult (*GetPAEEnabled)(IMachineDebugger *pThis, PRBool *PAEEnabled);
nsresult (*GetVirtualTimeRate)(IMachineDebugger *pThis, PRUint32 *virtualTimeRate);
nsresult (*SetVirtualTimeRate)(IMachineDebugger *pThis, PRUint32 virtualTimeRate);
nsresult (*GetVM)(IMachineDebugger *pThis, PRUint64 *VM);
nsresult (*ResetStats)(
IMachineDebugger *pThis,
PRUnichar * pattern
);
nsresult (*DumpStats)(
IMachineDebugger *pThis,
PRUnichar * pattern
);
nsresult (*GetStats)(
IMachineDebugger *pThis,
PRUnichar * pattern,
PRBool withDescriptions,
PRUnichar * * stats
);
nsresult (*InjectNMI)(IMachineDebugger *pThis );
};
struct IMachineDebugger
{
struct IMachineDebugger_vtbl *vtbl;
};
/* End of struct IMachineDebugger Declaration */
/* Start of struct IUSBController Declaration */
#define IUSBCONTROLLER_IID_STR "238540fa-4b73-435a-a38e-4e1d9eab5c17"
#define IUSBCONTROLLER_IID { \
0x238540fa, 0x4b73, 0x435a, \
{ 0xa3, 0x8e, 0x4e, 0x1d, 0x9e, 0xab, 0x5c, 0x17 } \
}
struct IUSBController_vtbl
{
struct nsISupports_vtbl nsisupports;
nsresult (*GetEnabled)(IUSBController *pThis, PRBool *enabled);
nsresult (*SetEnabled)(IUSBController *pThis, PRBool enabled);
nsresult (*GetEnabledEhci)(IUSBController *pThis, PRBool *enabledEhci);
nsresult (*SetEnabledEhci)(IUSBController *pThis, PRBool enabledEhci);
nsresult (*GetUSBStandard)(IUSBController *pThis, PRUint16 *USBStandard);
nsresult (*GetDeviceFilters)(IUSBController *pThis, PRUint32 *deviceFiltersSize, IUSBDeviceFilter * **deviceFilters);
nsresult (*CreateDeviceFilter)(
IUSBController *pThis,
PRUnichar * name,
IUSBDeviceFilter * * filter
);
nsresult (*InsertDeviceFilter)(
IUSBController *pThis,
PRUint32 position,
IUSBDeviceFilter * filter
);
nsresult (*RemoveDeviceFilter)(
IUSBController *pThis,
PRUint32 position,
IUSBDeviceFilter * * filter
);
};
struct IUSBController
{
struct IUSBController_vtbl *vtbl;
};
/* End of struct IUSBController Declaration */
/* Start of struct IUSBDevice Declaration */
#define IUSBDEVICE_IID_STR "f8967b0b-4483-400f-92b5-8b675d98a85b"
#define IUSBDEVICE_IID { \
0xf8967b0b, 0x4483, 0x400f, \
{ 0x92, 0xb5, 0x8b, 0x67, 0x5d, 0x98, 0xa8, 0x5b } \
}
struct IUSBDevice_vtbl
{
struct nsISupports_vtbl nsisupports;
nsresult (*GetId)(IUSBDevice *pThis, PRUnichar * *id);
nsresult (*GetVendorId)(IUSBDevice *pThis, PRUint16 *vendorId);
nsresult (*GetProductId)(IUSBDevice *pThis, PRUint16 *productId);
nsresult (*GetRevision)(IUSBDevice *pThis, PRUint16 *revision);
nsresult (*GetManufacturer)(IUSBDevice *pThis, PRUnichar * *manufacturer);
nsresult (*GetProduct)(IUSBDevice *pThis, PRUnichar * *product);
nsresult (*GetSerialNumber)(IUSBDevice *pThis, PRUnichar * *serialNumber);
nsresult (*GetAddress)(IUSBDevice *pThis, PRUnichar * *address);
nsresult (*GetPort)(IUSBDevice *pThis, PRUint16 *port);
nsresult (*GetVersion)(IUSBDevice *pThis, PRUint16 *version);
nsresult (*GetPortVersion)(IUSBDevice *pThis, PRUint16 *portVersion);
nsresult (*GetRemote)(IUSBDevice *pThis, PRBool *remote);
};
struct IUSBDevice
{
struct IUSBDevice_vtbl *vtbl;
};
/* End of struct IUSBDevice Declaration */
/* Start of struct IUSBDeviceFilter Declaration */
#define IUSBDEVICEFILTER_IID_STR "d6831fb4-1a94-4c2c-96ef-8d0d6192066d"
#define IUSBDEVICEFILTER_IID { \
0xd6831fb4, 0x1a94, 0x4c2c, \
{ 0x96, 0xef, 0x8d, 0x0d, 0x61, 0x92, 0x06, 0x6d } \
}
struct IUSBDeviceFilter_vtbl
{
struct nsISupports_vtbl nsisupports;
nsresult (*GetName)(IUSBDeviceFilter *pThis, PRUnichar * *name);
nsresult (*SetName)(IUSBDeviceFilter *pThis, PRUnichar * name);
nsresult (*GetActive)(IUSBDeviceFilter *pThis, PRBool *active);
nsresult (*SetActive)(IUSBDeviceFilter *pThis, PRBool active);
nsresult (*GetVendorId)(IUSBDeviceFilter *pThis, PRUnichar * *vendorId);
nsresult (*SetVendorId)(IUSBDeviceFilter *pThis, PRUnichar * vendorId);
nsresult (*GetProductId)(IUSBDeviceFilter *pThis, PRUnichar * *productId);
nsresult (*SetProductId)(IUSBDeviceFilter *pThis, PRUnichar * productId);
nsresult (*GetRevision)(IUSBDeviceFilter *pThis, PRUnichar * *revision);
nsresult (*SetRevision)(IUSBDeviceFilter *pThis, PRUnichar * revision);
nsresult (*GetManufacturer)(IUSBDeviceFilter *pThis, PRUnichar * *manufacturer);
nsresult (*SetManufacturer)(IUSBDeviceFilter *pThis, PRUnichar * manufacturer);
nsresult (*GetProduct)(IUSBDeviceFilter *pThis, PRUnichar * *product);
nsresult (*SetProduct)(IUSBDeviceFilter *pThis, PRUnichar * product);
nsresult (*GetSerialNumber)(IUSBDeviceFilter *pThis, PRUnichar * *serialNumber);
nsresult (*SetSerialNumber)(IUSBDeviceFilter *pThis, PRUnichar * serialNumber);
nsresult (*GetPort)(IUSBDeviceFilter *pThis, PRUnichar * *port);
nsresult (*SetPort)(IUSBDeviceFilter *pThis, PRUnichar * port);
nsresult (*GetRemote)(IUSBDeviceFilter *pThis, PRUnichar * *remote);
nsresult (*SetRemote)(IUSBDeviceFilter *pThis, PRUnichar * remote);
nsresult (*GetMaskedInterfaces)(IUSBDeviceFilter *pThis, PRUint32 *maskedInterfaces);
nsresult (*SetMaskedInterfaces)(IUSBDeviceFilter *pThis, PRUint32 maskedInterfaces);
};
struct IUSBDeviceFilter
{
struct IUSBDeviceFilter_vtbl *vtbl;
};
/* End of struct IUSBDeviceFilter Declaration */
/* Start of struct IHostUSBDevice Declaration */
#define IHOSTUSBDEVICE_IID_STR "173b4b44-d268-4334-a00d-b6521c9a740a"
#define IHOSTUSBDEVICE_IID { \
0x173b4b44, 0xd268, 0x4334, \
{ 0xa0, 0x0d, 0xb6, 0x52, 0x1c, 0x9a, 0x74, 0x0a } \
}
struct IHostUSBDevice_vtbl
{
struct IUSBDevice_vtbl iusbdevice;
nsresult (*GetState)(IHostUSBDevice *pThis, PRUint32 *state);
};
struct IHostUSBDevice
{
struct IHostUSBDevice_vtbl *vtbl;
};
/* End of struct IHostUSBDevice Declaration */
/* Start of struct IHostUSBDeviceFilter Declaration */
#define IHOSTUSBDEVICEFILTER_IID_STR "4cc70246-d74a-400f-8222-3900489c0374"
#define IHOSTUSBDEVICEFILTER_IID { \
0x4cc70246, 0xd74a, 0x400f, \
{ 0x82, 0x22, 0x39, 0x00, 0x48, 0x9c, 0x03, 0x74 } \
}
struct IHostUSBDeviceFilter_vtbl
{
struct IUSBDeviceFilter_vtbl iusbdevicefilter;
nsresult (*GetAction)(IHostUSBDeviceFilter *pThis, PRUint32 *action);
nsresult (*SetAction)(IHostUSBDeviceFilter *pThis, PRUint32 action);
};
struct IHostUSBDeviceFilter
{
struct IHostUSBDeviceFilter_vtbl *vtbl;
};
/* End of struct IHostUSBDeviceFilter Declaration */
/* Start of struct IAudioAdapter Declaration */
#define IAUDIOADAPTER_IID_STR "921873db-5f3f-4b69-91f9-7be9e535a2cb"
#define IAUDIOADAPTER_IID { \
0x921873db, 0x5f3f, 0x4b69, \
{ 0x91, 0xf9, 0x7b, 0xe9, 0xe5, 0x35, 0xa2, 0xcb } \
}
struct IAudioAdapter_vtbl
{
struct nsISupports_vtbl nsisupports;
nsresult (*GetEnabled)(IAudioAdapter *pThis, PRBool *enabled);
nsresult (*SetEnabled)(IAudioAdapter *pThis, PRBool enabled);
nsresult (*GetAudioController)(IAudioAdapter *pThis, PRUint32 *audioController);
nsresult (*SetAudioController)(IAudioAdapter *pThis, PRUint32 audioController);
nsresult (*GetAudioDriver)(IAudioAdapter *pThis, PRUint32 *audioDriver);
nsresult (*SetAudioDriver)(IAudioAdapter *pThis, PRUint32 audioDriver);
};
struct IAudioAdapter
{
struct IAudioAdapter_vtbl *vtbl;
};
/* End of struct IAudioAdapter Declaration */
/* Start of struct IVRDPServer Declaration */
#define IVRDPSERVER_IID_STR "f4584ae7-6bce-474b-83d6-17d235e6aa89"
#define IVRDPSERVER_IID { \
0xf4584ae7, 0x6bce, 0x474b, \
{ 0x83, 0xd6, 0x17, 0xd2, 0x35, 0xe6, 0xaa, 0x89 } \
}
struct IVRDPServer_vtbl
{
struct nsISupports_vtbl nsisupports;
nsresult (*GetEnabled)(IVRDPServer *pThis, PRBool *enabled);
nsresult (*SetEnabled)(IVRDPServer *pThis, PRBool enabled);
nsresult (*GetPort)(IVRDPServer *pThis, PRUint32 *port);
nsresult (*SetPort)(IVRDPServer *pThis, PRUint32 port);
nsresult (*GetNetAddress)(IVRDPServer *pThis, PRUnichar * *netAddress);
nsresult (*SetNetAddress)(IVRDPServer *pThis, PRUnichar * netAddress);
nsresult (*GetAuthType)(IVRDPServer *pThis, PRUint32 *authType);
nsresult (*SetAuthType)(IVRDPServer *pThis, PRUint32 authType);
nsresult (*GetAuthTimeout)(IVRDPServer *pThis, PRUint32 *authTimeout);
nsresult (*SetAuthTimeout)(IVRDPServer *pThis, PRUint32 authTimeout);
nsresult (*GetAllowMultiConnection)(IVRDPServer *pThis, PRBool *allowMultiConnection);
nsresult (*SetAllowMultiConnection)(IVRDPServer *pThis, PRBool allowMultiConnection);
nsresult (*GetReuseSingleConnection)(IVRDPServer *pThis, PRBool *reuseSingleConnection);
nsresult (*SetReuseSingleConnection)(IVRDPServer *pThis, PRBool reuseSingleConnection);
};
struct IVRDPServer
{
struct IVRDPServer_vtbl *vtbl;
};
/* End of struct IVRDPServer Declaration */
/* Start of struct ISharedFolder Declaration */
#define ISHAREDFOLDER_IID_STR "64637bb2-9e17-471c-b8f3-f8968dd9884e"
#define ISHAREDFOLDER_IID { \
0x64637bb2, 0x9e17, 0x471c, \
{ 0xb8, 0xf3, 0xf8, 0x96, 0x8d, 0xd9, 0x88, 0x4e } \
}
struct ISharedFolder_vtbl
{
struct nsISupports_vtbl nsisupports;
nsresult (*GetName)(ISharedFolder *pThis, PRUnichar * *name);
nsresult (*GetHostPath)(ISharedFolder *pThis, PRUnichar * *hostPath);
nsresult (*GetAccessible)(ISharedFolder *pThis, PRBool *accessible);
nsresult (*GetWritable)(ISharedFolder *pThis, PRBool *writable);
nsresult (*GetLastAccessError)(ISharedFolder *pThis, PRUnichar * *lastAccessError);
};
struct ISharedFolder
{
struct ISharedFolder_vtbl *vtbl;
};
/* End of struct ISharedFolder Declaration */
/* Start of struct IInternalSessionControl Declaration */
#define IINTERNALSESSIONCONTROL_IID_STR "b26552e7-9534-4f47-b766-98eac648a90d"
#define IINTERNALSESSIONCONTROL_IID { \
0xb26552e7, 0x9534, 0x4f47, \
{ 0xb7, 0x66, 0x98, 0xea, 0xc6, 0x48, 0xa9, 0x0d } \
}
struct IInternalSessionControl_vtbl
{
struct nsISupports_vtbl nsisupports;
nsresult (*GetPID)(
IInternalSessionControl *pThis,
PRUint32 * pid
);
nsresult (*GetRemoteConsole)(
IInternalSessionControl *pThis,
IConsole * * console
);
nsresult (*AssignMachine)(
IInternalSessionControl *pThis,
IMachine * machine
);
nsresult (*AssignRemoteMachine)(
IInternalSessionControl *pThis,
IMachine * machine,
IConsole * console
);
nsresult (*UpdateMachineState)(
IInternalSessionControl *pThis,
PRUint32 aMachineState
);
nsresult (*Uninitialize)(IInternalSessionControl *pThis );
nsresult (*OnDVDDriveChange)(IInternalSessionControl *pThis );
nsresult (*OnFloppyDriveChange)(IInternalSessionControl *pThis );
nsresult (*OnNetworkAdapterChange)(
IInternalSessionControl *pThis,
INetworkAdapter * networkAdapter
);
nsresult (*OnSerialPortChange)(
IInternalSessionControl *pThis,
ISerialPort * serialPort
);
nsresult (*OnParallelPortChange)(
IInternalSessionControl *pThis,
IParallelPort * parallelPort
);
nsresult (*OnStorageControllerChange)(IInternalSessionControl *pThis );
nsresult (*OnVRDPServerChange)(IInternalSessionControl *pThis );
nsresult (*OnUSBControllerChange)(IInternalSessionControl *pThis );
nsresult (*OnSharedFolderChange)(
IInternalSessionControl *pThis,
PRBool global
);
nsresult (*OnUSBDeviceAttach)(
IInternalSessionControl *pThis,
IUSBDevice * device,
IVirtualBoxErrorInfo * error,
PRUint32 maskedInterfaces
);
nsresult (*OnUSBDeviceDetach)(
IInternalSessionControl *pThis,
PRUnichar * id,
IVirtualBoxErrorInfo * error
);
nsresult (*OnShowWindow)(
IInternalSessionControl *pThis,
PRBool check,
PRBool * canShow,
PRUint64 * winId
);
nsresult (*AccessGuestProperty)(
IInternalSessionControl *pThis,
PRUnichar * name,
PRUnichar * value,
PRUnichar * flags,
PRBool isSetter,
PRUnichar * * retValue,
PRUint64 * retTimestamp,
PRUnichar * * retFlags
);
nsresult (*EnumerateGuestProperties)(
IInternalSessionControl *pThis,
PRUnichar * patterns,
PRUint32 *keySize,
PRUnichar *** key,
PRUint32 *valueSize,
PRUnichar *** value,
PRUint32 *timestampSize,
PRUint64* timestamp,
PRUint32 *flagsSize,
PRUnichar *** flags
);
};
struct IInternalSessionControl
{
struct IInternalSessionControl_vtbl *vtbl;
};
/* End of struct IInternalSessionControl Declaration */
/* Start of struct ISession Declaration */
#define ISESSION_IID_STR "12F4DCDB-12B2-4ec1-B7CD-DDD9F6C5BF4D"
#define ISESSION_IID { \
0x12F4DCDB, 0x12B2, 0x4ec1, \
{ 0xB7, 0xCD, 0xDD, 0xD9, 0xF6, 0xC5, 0xBF, 0x4D } \
}
struct ISession_vtbl
{
struct nsISupports_vtbl nsisupports;
nsresult (*GetState)(ISession *pThis, PRUint32 *state);
nsresult (*GetType)(ISession *pThis, PRUint32 *type);
nsresult (*GetMachine)(ISession *pThis, IMachine * *machine);
nsresult (*GetConsole)(ISession *pThis, IConsole * *console);
nsresult (*Close)(ISession *pThis );
};
struct ISession
{
struct ISession_vtbl *vtbl;
};
/* End of struct ISession Declaration */
/* Start of struct IStorageController Declaration */
#define ISTORAGECONTROLLER_IID_STR "6bf8335b-d14a-44a5-9b45-ddc49ce7d5b2"
#define ISTORAGECONTROLLER_IID { \
0x6bf8335b, 0xd14a, 0x44a5, \
{ 0x9b, 0x45, 0xdd, 0xc4, 0x9c, 0xe7, 0xd5, 0xb2 } \
}
struct IStorageController_vtbl
{
struct nsISupports_vtbl nsisupports;
nsresult (*GetName)(IStorageController *pThis, PRUnichar * *name);
nsresult (*GetMaxDevicesPerPortCount)(IStorageController *pThis, PRUint32 *maxDevicesPerPortCount);
nsresult (*GetMinPortCount)(IStorageController *pThis, PRUint32 *minPortCount);
nsresult (*GetMaxPortCount)(IStorageController *pThis, PRUint32 *maxPortCount);
nsresult (*GetInstance)(IStorageController *pThis, PRUint32 *instance);
nsresult (*SetInstance)(IStorageController *pThis, PRUint32 instance);
nsresult (*GetPortCount)(IStorageController *pThis, PRUint32 *portCount);
nsresult (*SetPortCount)(IStorageController *pThis, PRUint32 portCount);
nsresult (*GetBus)(IStorageController *pThis, PRUint32 *bus);
nsresult (*GetControllerType)(IStorageController *pThis, PRUint32 *controllerType);
nsresult (*SetControllerType)(IStorageController *pThis, PRUint32 controllerType);
nsresult (*GetIDEEmulationPort)(
IStorageController *pThis,
PRInt32 devicePosition,
PRInt32 * portNumber
);
nsresult (*SetIDEEmulationPort)(
IStorageController *pThis,
PRInt32 devicePosition,
PRInt32 portNumber
);
};
struct IStorageController
{
struct IStorageController_vtbl *vtbl;
};
/* End of struct IStorageController Declaration */
/* Start of struct IPerformanceMetric Declaration */
#define IPERFORMANCEMETRIC_IID_STR "2a1a60ae-9345-4019-ad53-d34ba41cbfe9"
#define IPERFORMANCEMETRIC_IID { \
0x2a1a60ae, 0x9345, 0x4019, \
{ 0xad, 0x53, 0xd3, 0x4b, 0xa4, 0x1c, 0xbf, 0xe9 } \
}
struct IPerformanceMetric_vtbl
{
struct nsISupports_vtbl nsisupports;
nsresult (*GetMetricName)(IPerformanceMetric *pThis, PRUnichar * *metricName);
nsresult (*GetObject)(IPerformanceMetric *pThis, nsISupports * *object);
nsresult (*GetDescription)(IPerformanceMetric *pThis, PRUnichar * *description);
nsresult (*GetPeriod)(IPerformanceMetric *pThis, PRUint32 *period);
nsresult (*GetCount)(IPerformanceMetric *pThis, PRUint32 *count);
nsresult (*GetUnit)(IPerformanceMetric *pThis, PRUnichar * *unit);
nsresult (*GetMinimumValue)(IPerformanceMetric *pThis, PRInt32 *minimumValue);
nsresult (*GetMaximumValue)(IPerformanceMetric *pThis, PRInt32 *maximumValue);
};
struct IPerformanceMetric
{
struct IPerformanceMetric_vtbl *vtbl;
};
/* End of struct IPerformanceMetric Declaration */
/* Start of struct IPerformanceCollector Declaration */
#define IPERFORMANCECOLLECTOR_IID_STR "e22e1acb-ac4a-43bb-a31c-17321659b0c6"
#define IPERFORMANCECOLLECTOR_IID { \
0xe22e1acb, 0xac4a, 0x43bb, \
{ 0xa3, 0x1c, 0x17, 0x32, 0x16, 0x59, 0xb0, 0xc6 } \
}
struct IPerformanceCollector_vtbl
{
struct nsISupports_vtbl nsisupports;
nsresult (*GetMetricNames)(IPerformanceCollector *pThis, PRUint32 *metricNamesSize, PRUnichar * **metricNames);
nsresult (*GetMetrics)(
IPerformanceCollector *pThis,
PRUint32 metricNamesSize,
PRUnichar ** metricNames,
PRUint32 objectsSize,
nsISupports ** objects,
PRUint32 *metricsSize,
IPerformanceMetric *** metrics
);
nsresult (*SetupMetrics)(
IPerformanceCollector *pThis,
PRUint32 metricNamesSize,
PRUnichar ** metricNames,
PRUint32 objectsSize,
nsISupports ** objects,
PRUint32 period,
PRUint32 count,
PRUint32 *affectedMetricsSize,
IPerformanceMetric *** affectedMetrics
);
nsresult (*EnableMetrics)(
IPerformanceCollector *pThis,
PRUint32 metricNamesSize,
PRUnichar ** metricNames,
PRUint32 objectsSize,
nsISupports ** objects,
PRUint32 *affectedMetricsSize,
IPerformanceMetric *** affectedMetrics
);
nsresult (*DisableMetrics)(
IPerformanceCollector *pThis,
PRUint32 metricNamesSize,
PRUnichar ** metricNames,
PRUint32 objectsSize,
nsISupports ** objects,
PRUint32 *affectedMetricsSize,
IPerformanceMetric *** affectedMetrics
);
nsresult (*QueryMetricsData)(
IPerformanceCollector *pThis,
PRUint32 metricNamesSize,
PRUnichar ** metricNames,
PRUint32 objectsSize,
nsISupports ** objects,
PRUint32 *returnMetricNamesSize,
PRUnichar *** returnMetricNames,
PRUint32 *returnObjectsSize,
nsISupports ** returnObjects,
PRUint32 *returnUnitsSize,
PRUnichar *** returnUnits,
PRUint32 *returnScalesSize,
PRUint32* returnScales,
PRUint32 *returnSequenceNumbersSize,
PRUint32* returnSequenceNumbers,
PRUint32 *returnDataIndicesSize,
PRUint32* returnDataIndices,
PRUint32 *returnDataLengthsSize,
PRUint32* returnDataLengths,
PRUint32 *returnDataSize,
PRInt32** returnData
);
};
struct IPerformanceCollector
{
struct IPerformanceCollector_vtbl *vtbl;
};
/* End of struct IPerformanceCollector Declaration */
#define NS_VIRTUALBOX_CID { \
0xB1A7A4F2, 0x47B9, 0x4A1E, \
{ 0x82, 0xB2, 0x07, 0xCC, 0xD5, 0x32, 0x3C, 0x3F } \
}
#define NS_VIRTUALBOX_CONTRACTID "@virtualbox.org/VirtualBox;1"
/* for compatibility with Win32 */
#define CLSID_VirtualBox (nsCID) NS_VIRTUALBOX_CID
#define NS_SESSION_CID { \
0x3C02F46D, 0xC9D2, 0x4f11, \
{ 0xA3, 0x84, 0x53, 0xF0, 0xCF, 0x91, 0x72, 0x14 } \
}
#define NS_SESSION_CONTRACTID "@virtualbox.org/Session;1"
/* for compatibility with Win32 */
#define CLSID_Session (nsCID) NS_SESSION_CID
#endif /* !__cplusplus */
#ifdef IN_VBOXXPCOMC
# define VBOXXPCOMC_DECL(type) PR_EXPORT(type)
#else
# define VBOXXPCOMC_DECL(type) PR_IMPORT(type)
#endif
#ifdef __cplusplus
extern "C" {
#endif
/**
* Function table for dynamic linking.
* Use VBoxGetFunctions() to obtain the pointer to it.
*/
typedef struct VBOXXPCOMC
{
/** The size of the structure. */
unsigned cb;
/** The structure version. */
unsigned uVersion;
unsigned int (*pfnGetVersion)(void);
void (*pfnComInitialize)(const char *pszVirtualBoxIID,
IVirtualBox **ppVirtualBox,
const char *pszSessionIID,
ISession **ppSession);
void (*pfnComUninitialize)(void);
void (*pfnComUnallocMem)(void *pv);
void (*pfnUtf16Free)(PRUnichar *pwszString);
void (*pfnUtf8Free)(char *pszString);
int (*pfnUtf16ToUtf8)(const PRUnichar *pwszString, char **ppszString);
int (*pfnUtf8ToUtf16)(const char *pszString, PRUnichar **ppwszString);
void (*pfnGetEventQueue)(nsIEventQueue **eventQueue);
/** Tail version, same as uVersion. */
unsigned uEndVersion;
} VBOXXPCOMC;
/** Pointer to a const VBoxXPCOMC function table. */
typedef VBOXXPCOMC const *PCVBOXXPCOM;
/** The current interface version.
* For use with VBoxGetXPCOMCFunctions and to be found in
* VBOXXPCOMC::uVersion. */
#define VBOX_XPCOMC_VERSION 0x00020000U
VBOXXPCOMC_DECL(PCVBOXXPCOM) VBoxGetXPCOMCFunctions(unsigned uVersion);
/** Typedef for VBoxGetXPCOMCFunctions. */
typedef PCVBOXXPCOM (*PFNVBOXGETXPCOMCFUNCTIONS)(unsigned uVersion);
/** The symbol name of VBoxGetXPCOMCFunctions. */
#if defined(__OS2__)
# define VBOX_GET_XPCOMC_FUNCTIONS_SYMBOL_NAME "_VBoxGetXPCOMCFunctions"
#else
# define VBOX_GET_XPCOMC_FUNCTIONS_SYMBOL_NAME "VBoxGetXPCOMCFunctions"
#endif
#ifdef __cplusplus
}
#endif
#endif /* !___VirtualBox_CXPCOM_h */
/** @file vbox_V3_0.c
* C file to include support for multiple versions of VirtualBox
* at runtime.
*/
/*
* Copyright (C) 2008-2009 Sun Microsystems, Inc.
*
* This file is part of a free software library; you can redistribute
* it and/or modify it under the terms of the GNU Lesser General
* Public License version 2.1 as published by the Free Software
* Foundation and shipped in the "COPYING" file with this library.
* The library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY of any kind.
*
* Sun LGPL Disclaimer: For the avoidance of doubt, except that if
* any license choice other than GPL or LGPL is available it will
* apply instead, Sun elects to use only the Lesser General Public
* License version 2.1 (LGPLv2) at this time for any software where
* a choice of LGPL license versions is made available with the
* language indicating that LGPLv2 or any later version may be used,
* or where a choice of which version of the LGPL is applied is
* otherwise unspecified.
*
* Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
* Clara, CA 95054 USA or visit http://www.sun.com if you need
* additional information or have any questions.
*/
#include <config.h>
/** The API Version */
#define VBOX_API_VERSION 3000
/** Version specific prefix. */
#define NAME(name) vbox30##name
#include "vbox_tmpl.c"
...@@ -41,10 +41,8 @@ ...@@ -41,10 +41,8 @@
extern virDriver vbox22Driver; extern virDriver vbox22Driver;
extern virNetworkDriver vbox22NetworkDriver; extern virNetworkDriver vbox22NetworkDriver;
#if 0 extern virDriver vbox30Driver;
extern virDriver vbox25Driver; extern virNetworkDriver vbox30NetworkDriver;
extern virNetworkDriver vbox25NetworkDriver;
#endif
static virDriver vboxDriverDummy; static virDriver vboxDriverDummy;
...@@ -85,12 +83,10 @@ int vboxRegister(void) { ...@@ -85,12 +83,10 @@ int vboxRegister(void) {
DEBUG0("VirtualBox API version: 2.2"); DEBUG0("VirtualBox API version: 2.2");
driver = &vbox22Driver; driver = &vbox22Driver;
networkDriver = &vbox22NetworkDriver; networkDriver = &vbox22NetworkDriver;
#if 0 } else if (uVersion >= 2002051 && uVersion < 3000051) {
} else if (uVersion >= 2002051 && uVersion < 2005051) { DEBUG0("VirtualBox API version: 3.0");
DEBUG0("VirtualBox API version: 2.5"); driver = &vbox30Driver;
driver = &vbox25Driver; networkDriver = &vbox30NetworkDriver;
networkDriver = &vbox25NetworkDriver;
#endif
} else { } else {
DEBUG0("Unsupport VirtualBox API version"); DEBUG0("Unsupport VirtualBox API version");
} }
......
...@@ -42,7 +42,9 @@ ...@@ -42,7 +42,9 @@
#include "domain_conf.h" #include "domain_conf.h"
#include "network_conf.h" #include "network_conf.h"
#include "virterror_internal.h" #include "virterror_internal.h"
#include "domain_event.h"
#include "uuid.h" #include "uuid.h"
#include "event.h"
#include "memory.h" #include "memory.h"
#include "nodeinfo.h" #include "nodeinfo.h"
#include "logging.h" #include "logging.h"
...@@ -51,11 +53,10 @@ ...@@ -51,11 +53,10 @@
/* This one changes from version to version. */ /* This one changes from version to version. */
#if VBOX_API_VERSION == 2002 #if VBOX_API_VERSION == 2002
# include "vbox_CAPI_v2_2.h" # include "vbox_CAPI_v2_2.h"
/* Commented for now, v2.5 is far far away */ #elif VBOX_API_VERSION == 3000
/* # include "vbox_CAPI_v3_0.h"
#elif VBOX_API_VERSION == 2005 #else
# include "VBoxCAPI_v2_5.h" # error "Unsupport VBOX_API_VERSION"
*/
#endif #endif
/* Include this *last* or we'll get the wrong vbox_CAPI_*.h. */ /* Include this *last* or we'll get the wrong vbox_CAPI_*.h. */
...@@ -68,6 +69,33 @@ ...@@ -68,6 +69,33 @@
virReportErrorHelper(conn, VIR_FROM_VBOX, code, __FILE__, \ virReportErrorHelper(conn, VIR_FROM_VBOX, code, __FILE__, \
__FUNCTION__, __LINE__, fmt) __FUNCTION__, __LINE__, fmt)
#define DEBUGPRUnichar(msg, strUtf16) \
if (strUtf16) {\
char *strUtf8 = NULL;\
\
g_pVBoxGlobalData->pFuncs->pfnUtf16ToUtf8(strUtf16, &strUtf8);\
if (strUtf8) {\
DEBUG("%s: %s", msg, strUtf8);\
g_pVBoxGlobalData->pFuncs->pfnUtf8Free(strUtf8);\
}\
}
#define DEBUGUUID(msg, iid) \
{\
DEBUG (msg ": {%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}",\
(unsigned)(iid)->m0,\
(unsigned)(iid)->m1,\
(unsigned)(iid)->m2,\
(unsigned)(iid)->m3[0],\
(unsigned)(iid)->m3[1],\
(unsigned)(iid)->m3[2],\
(unsigned)(iid)->m3[3],\
(unsigned)(iid)->m3[4],\
(unsigned)(iid)->m3[5],\
(unsigned)(iid)->m3[6],\
(unsigned)(iid)->m3[7]);\
}\
typedef struct { typedef struct {
virMutex lock; virMutex lock;
int version; int version;
...@@ -80,13 +108,56 @@ typedef struct { ...@@ -80,13 +108,56 @@ typedef struct {
/** Our version specific API table pointer. */ /** Our version specific API table pointer. */
PCVBOXXPCOM pFuncs; PCVBOXXPCOM pFuncs;
#if VBOX_API_VERSION == 2002
} vboxGlobalData;
#else /* !(VBOX_API_VERSION == 2002) */
/* An array of callbacks */
virDomainEventCallbackListPtr domainEventCallbacks;
int fdWatch;
int domainEventDispatching;
IVirtualBoxCallback *vboxCallback;
nsIEventQueue *vboxQueue;
int volatile vboxCallBackRefCount;
/* pointer back to the connection */
virConnectPtr conn;
} vboxGlobalData; } vboxGlobalData;
/* g_pVBoxGlobalData has to be global variable,
* there is no other way to make the callbacks
* work other then having g_pVBoxGlobalData as
* global, because the functions namely AddRef,
* Release, etc consider it as global and you
* can't change the function definition as it
* is XPCOM nsISupport::* function and it expects
* them that way
*/
vboxGlobalData *g_pVBoxGlobalData = NULL;
#endif /* !(VBOX_API_VERSION == 2002) */
static virDomainPtr vboxDomainDefineXML(virConnectPtr conn, const char *xml); static virDomainPtr vboxDomainDefineXML(virConnectPtr conn, const char *xml);
static int vboxDomainCreate(virDomainPtr dom); static int vboxDomainCreate(virDomainPtr dom);
static int vboxDomainUndefine(virDomainPtr dom); static int vboxDomainUndefine(virDomainPtr dom);
static void vboxDriverLock(vboxGlobalData *data) {
virMutexLock(&data->lock);
}
static void vboxDriverUnlock(vboxGlobalData *data) {
virMutexUnlock(&data->lock);
}
#if VBOX_API_VERSION == 2002
static void nsIDtoChar(unsigned char *uuid, const nsID *iid) { static void nsIDtoChar(unsigned char *uuid, const nsID *iid) {
char uuidstrsrc[VIR_UUID_STRING_BUFLEN]; char uuidstrsrc[VIR_UUID_STRING_BUFLEN];
char uuidstrdst[VIR_UUID_STRING_BUFLEN]; char uuidstrdst[VIR_UUID_STRING_BUFLEN];
...@@ -127,14 +198,6 @@ static void nsIDtoChar(unsigned char *uuid, const nsID *iid) { ...@@ -127,14 +198,6 @@ static void nsIDtoChar(unsigned char *uuid, const nsID *iid) {
virUUIDParse(uuidstrdst, uuid); virUUIDParse(uuidstrdst, uuid);
} }
static void vboxDriverLock(vboxGlobalData *data) {
virMutexLock(&data->lock);
}
static void vboxDriverUnlock(vboxGlobalData *data) {
virMutexUnlock(&data->lock);
}
static void nsIDFromChar(nsID *iid, const unsigned char *uuid) { static void nsIDFromChar(nsID *iid, const unsigned char *uuid) {
char uuidstrsrc[VIR_UUID_STRING_BUFLEN]; char uuidstrsrc[VIR_UUID_STRING_BUFLEN];
char uuidstrdst[VIR_UUID_STRING_BUFLEN]; char uuidstrdst[VIR_UUID_STRING_BUFLEN];
...@@ -175,6 +238,37 @@ static void nsIDFromChar(nsID *iid, const unsigned char *uuid) { ...@@ -175,6 +238,37 @@ static void nsIDFromChar(nsID *iid, const unsigned char *uuid) {
memcpy(iid, uuidinterim, VIR_UUID_BUFLEN); memcpy(iid, uuidinterim, VIR_UUID_BUFLEN);
} }
typedef nsID vboxIID;
#define vboxIIDFromUUID(uuid, iid) nsIDFromChar((iid), (uuid))
#define vboxIIDToUUID(uuid, iid) nsIDtoChar((uuid), (iid))
#define vboxIIDUnalloc(iid) data->pFuncs->pfnComUnallocMem(iid)
#define vboxIIDFree(iid) VIR_FREE(iid)
#else /* !(VBOX_API_VERSION == 2002) */
typedef PRUnichar vboxIID;
#define vboxIIDFromUUID(uuid, iid)\
{\
char vboxIIDUtf8[VIR_UUID_STRING_BUFLEN];\
\
virUUIDFormat((uuid), vboxIIDUtf8);\
data->pFuncs->pfnUtf8ToUtf16(vboxIIDUtf8, (&(iid)));\
}
#define vboxIIDToUUID(uuid, iid)\
{\
char *vboxIIDUtf8 = NULL;\
data->pFuncs->pfnUtf16ToUtf8((iid), &vboxIIDUtf8);\
virUUIDParse(vboxIIDUtf8, (uuid));\
data->pFuncs->pfnUtf8Free(vboxIIDUtf8);\
}
#define vboxIIDFree(iid) data->pFuncs->pfnUtf16Free(iid)
#endif /* !(VBOX_API_VERSION == 2002) */
static virCapsPtr vboxCapsInit(void) { static virCapsPtr vboxCapsInit(void) {
struct utsname utsname; struct utsname utsname;
virCapsPtr caps; virCapsPtr caps;
...@@ -226,10 +320,28 @@ static int vboxInitialize(virConnectPtr conn, vboxGlobalData *data) { ...@@ -226,10 +320,28 @@ static int vboxInitialize(virConnectPtr conn, vboxGlobalData *data) {
#if VBOX_XPCOMC_VERSION == 0x00010000U #if VBOX_XPCOMC_VERSION == 0x00010000U
data->pFuncs->pfnComInitialize(&data->vboxObj, &data->vboxSession); data->pFuncs->pfnComInitialize(&data->vboxObj, &data->vboxSession);
#else #else /* !(VBOX_XPCOMC_VERSION == 0x00010000U) */
data->pFuncs->pfnComInitialize(IVIRTUALBOX_IID_STR, &data->vboxObj, data->pFuncs->pfnComInitialize(IVIRTUALBOX_IID_STR, &data->vboxObj,
ISESSION_IID_STR, &data->vboxSession); ISESSION_IID_STR, &data->vboxSession);
#endif
#if VBOX_API_VERSION == 2002
/* No event queue functionality in 2.2.* as of now */
#else /* !(VBOX_API_VERSION == 2002) */
/* Initial the fWatch needed for Event Callbacks */
data->fdWatch = -1;
data->pFuncs->pfnGetEventQueue(&data->vboxQueue);
if (data->vboxQueue == NULL) {
vboxError(conn, VIR_ERR_INTERNAL_ERROR, "nsIEventQueue object is null");
goto cleanup;
}
#endif /* !(VBOX_API_VERSION == 2002) */
#endif /* !(VBOX_XPCOMC_VERSION == 0x00010000U) */
if (data->vboxObj == NULL) { if (data->vboxObj == NULL) {
vboxError(conn, VIR_ERR_INTERNAL_ERROR, "IVirtualBox object is null"); vboxError(conn, VIR_ERR_INTERNAL_ERROR, "IVirtualBox object is null");
...@@ -290,6 +402,11 @@ static void vboxUninitialize(vboxGlobalData *data) { ...@@ -290,6 +402,11 @@ static void vboxUninitialize(vboxGlobalData *data) {
virDomainObjListFree(&data->domains); virDomainObjListFree(&data->domains);
virCapabilitiesFree(data->caps); virCapabilitiesFree(data->caps);
#if VBOX_API_VERSION == 2002
/* No domainEventCallbacks in 2.2.* version */
#else /* !(VBOX_API_VERSION == 2002) */
VIR_FREE(data->domainEventCallbacks);
#endif /* !(VBOX_API_VERSION == 2002) */
VIR_FREE(data); VIR_FREE(data);
} }
...@@ -348,6 +465,22 @@ static virDrvOpenStatus vboxOpen(virConnectPtr conn, ...@@ -348,6 +465,22 @@ static virDrvOpenStatus vboxOpen(virConnectPtr conn,
return VIR_DRV_OPEN_ERROR; return VIR_DRV_OPEN_ERROR;
} }
#if VBOX_API_VERSION == 2002
/* No domainEventCallbacks in 2.2.* version */
#else /* !(VBOX_API_VERSION == 2002) */
if (VIR_ALLOC(data->domainEventCallbacks) < 0) {
virReportOOMError(conn);
return VIR_DRV_OPEN_ERROR;
}
data->conn = conn;
g_pVBoxGlobalData = data;
#endif /* !(VBOX_API_VERSION == 2002) */
conn->privateData = data; conn->privateData = data;
DEBUG0("in vboxOpen"); DEBUG0("in vboxOpen");
...@@ -455,7 +588,13 @@ static int vboxListDomains(virConnectPtr conn, int *ids, int nids) { ...@@ -455,7 +588,13 @@ static int vboxListDomains(virConnectPtr conn, int *ids, int nids) {
machine->vtbl->GetAccessible(machine, &isAccessible); machine->vtbl->GetAccessible(machine, &isAccessible);
if (isAccessible) { if (isAccessible) {
machine->vtbl->GetState(machine, &state); machine->vtbl->GetState(machine, &state);
if ((state == MachineState_Running) || if ((state == MachineState_Starting) ||
(state == MachineState_Running) ||
(state == MachineState_Stuck) ||
(state == MachineState_Stopping) ||
(state == MachineState_Saving) ||
(state == MachineState_Restoring) ||
(state == MachineState_Discarding) ||
(state == MachineState_Paused) ) { (state == MachineState_Paused) ) {
ret++; ret++;
ids[j++] = i + 1; ids[j++] = i + 1;
...@@ -504,7 +643,13 @@ static int vboxNumOfDomains(virConnectPtr conn) { ...@@ -504,7 +643,13 @@ static int vboxNumOfDomains(virConnectPtr conn) {
machine->vtbl->GetAccessible(machine, &isAccessible); machine->vtbl->GetAccessible(machine, &isAccessible);
if (isAccessible) { if (isAccessible) {
machine->vtbl->GetState(machine, &state); machine->vtbl->GetState(machine, &state);
if ((state == MachineState_Running) || if ((state == MachineState_Starting) ||
(state == MachineState_Running) ||
(state == MachineState_Stuck) ||
(state == MachineState_Stopping) ||
(state == MachineState_Saving) ||
(state == MachineState_Restoring) ||
(state == MachineState_Discarding) ||
(state == MachineState_Paused) ) { (state == MachineState_Paused) ) {
ret++; ret++;
} }
...@@ -554,7 +699,7 @@ static virDomainPtr vboxDomainLookupByID(virConnectPtr conn, int id) { ...@@ -554,7 +699,7 @@ static virDomainPtr vboxDomainLookupByID(virConnectPtr conn, int id) {
IMachine **machines = NULL; IMachine **machines = NULL;
PRUint32 machineCnt = 0; PRUint32 machineCnt = 0;
virDomainPtr dom = NULL; virDomainPtr dom = NULL;
nsID *iid = NULL; vboxIID *iid = NULL;
unsigned char iidl[VIR_UUID_BUFLEN]; unsigned char iidl[VIR_UUID_BUFLEN];
PRUint32 state; PRUint32 state;
int i; int i;
...@@ -582,16 +727,27 @@ static virDomainPtr vboxDomainLookupByID(virConnectPtr conn, int id) { ...@@ -582,16 +727,27 @@ static virDomainPtr vboxDomainLookupByID(virConnectPtr conn, int id) {
machines[id]->vtbl->GetAccessible(machines[id], &isAccessible); machines[id]->vtbl->GetAccessible(machines[id], &isAccessible);
if (isAccessible) { if (isAccessible) {
machines[id]->vtbl->GetState(machines[id], &state); machines[id]->vtbl->GetState(machines[id], &state);
if ((state == MachineState_Running) || if ((state == MachineState_Starting) ||
(state == MachineState_Running) ||
(state == MachineState_Stuck) ||
(state == MachineState_Stopping) ||
(state == MachineState_Saving) ||
(state == MachineState_Restoring) ||
(state == MachineState_Discarding) ||
(state == MachineState_Paused) ) { (state == MachineState_Paused) ) {
PRUnichar *machineNameUtf16 = NULL; PRUnichar *machineNameUtf16 = NULL;
char *machineName; char *machineNameUtf8 = NULL;
machines[id]->vtbl->GetName(machines[id], &machineNameUtf16); machines[id]->vtbl->GetName(machines[id], &machineNameUtf16);
data->pFuncs->pfnUtf16ToUtf8(machineNameUtf16, &machineName); data->pFuncs->pfnUtf16ToUtf8(machineNameUtf16, &machineNameUtf8);
machines[id]->vtbl->GetId(machines[id], &iid); machines[id]->vtbl->GetId(machines[id], &iid);
nsIDtoChar(iidl, iid); vboxIIDToUUID(iidl, iid);
#if VBOX_API_VERSION == 2002
vboxIIDUnalloc(iid);
#else
vboxIIDFree(iid);
#endif
/* get a new domain pointer from virGetDomain, if it fails /* get a new domain pointer from virGetDomain, if it fails
* then no need to assign the id, else assign the id, cause * then no need to assign the id, else assign the id, cause
...@@ -599,14 +755,13 @@ static virDomainPtr vboxDomainLookupByID(virConnectPtr conn, int id) { ...@@ -599,14 +755,13 @@ static virDomainPtr vboxDomainLookupByID(virConnectPtr conn, int id) {
* itself, so need not worry. * itself, so need not worry.
*/ */
dom = virGetDomain(conn, machineName, iidl); dom = virGetDomain(conn, machineNameUtf8, iidl);
if (dom) if (dom)
dom->id = id + 1; dom->id = id + 1;
/* Cleanup all the XPCOM allocated stuff here */ /* Cleanup all the XPCOM allocated stuff here */
data->pFuncs->pfnComUnallocMem(iid); data->pFuncs->pfnUtf8Free(machineNameUtf8);
data->pFuncs->pfnUtf8Free(machineName); data->pFuncs->pfnUtf16Free(machineNameUtf16);
data->pFuncs->pfnComUnallocMem(machineNameUtf16);
} }
} }
} }
...@@ -628,8 +783,8 @@ static virDomainPtr vboxDomainLookupByUUID(virConnectPtr conn, const unsigned ch ...@@ -628,8 +783,8 @@ static virDomainPtr vboxDomainLookupByUUID(virConnectPtr conn, const unsigned ch
IMachine **machines = NULL; IMachine **machines = NULL;
PRUint32 machineCnt = 0; PRUint32 machineCnt = 0;
virDomainPtr dom = NULL; virDomainPtr dom = NULL;
nsID *iid = NULL; vboxIID *iid = NULL;
char *machineName = NULL; char *machineNameUtf8 = NULL;
PRUnichar *machineNameUtf16 = NULL; PRUnichar *machineNameUtf16 = NULL;
unsigned char iidl[VIR_UUID_BUFLEN]; unsigned char iidl[VIR_UUID_BUFLEN];
int i, matched = 0; int i, matched = 0;
...@@ -655,7 +810,12 @@ static virDomainPtr vboxDomainLookupByUUID(virConnectPtr conn, const unsigned ch ...@@ -655,7 +810,12 @@ static virDomainPtr vboxDomainLookupByUUID(virConnectPtr conn, const unsigned ch
machine->vtbl->GetId(machine, &iid); machine->vtbl->GetId(machine, &iid);
if (!iid) if (!iid)
continue; continue;
nsIDtoChar(iidl, iid); vboxIIDToUUID(iidl, iid);
#if VBOX_API_VERSION == 2002
vboxIIDUnalloc(iid);
#else
vboxIIDFree(iid);
#endif
if (memcmp(uuid, iidl, VIR_UUID_BUFLEN) == 0) { if (memcmp(uuid, iidl, VIR_UUID_BUFLEN) == 0) {
...@@ -664,7 +824,7 @@ static virDomainPtr vboxDomainLookupByUUID(virConnectPtr conn, const unsigned ch ...@@ -664,7 +824,7 @@ static virDomainPtr vboxDomainLookupByUUID(virConnectPtr conn, const unsigned ch
matched = 1; matched = 1;
machine->vtbl->GetName(machine, &machineNameUtf16); machine->vtbl->GetName(machine, &machineNameUtf16);
data->pFuncs->pfnUtf16ToUtf8(machineNameUtf16, &machineName); data->pFuncs->pfnUtf16ToUtf8(machineNameUtf16, &machineNameUtf8);
machine->vtbl->GetState(machine, &state); machine->vtbl->GetState(machine, &state);
...@@ -674,25 +834,27 @@ static virDomainPtr vboxDomainLookupByUUID(virConnectPtr conn, const unsigned ch ...@@ -674,25 +834,27 @@ static virDomainPtr vboxDomainLookupByUUID(virConnectPtr conn, const unsigned ch
* itself, so need not worry. * itself, so need not worry.
*/ */
dom = virGetDomain(conn, machineName, iidl); dom = virGetDomain(conn, machineNameUtf8, iidl);
if (dom) if (dom)
if ((state == MachineState_Running) || if ((state == MachineState_Starting) ||
(state == MachineState_Running) ||
(state == MachineState_Stuck) ||
(state == MachineState_Stopping) ||
(state == MachineState_Saving) ||
(state == MachineState_Restoring) ||
(state == MachineState_Discarding) ||
(state == MachineState_Paused) ) (state == MachineState_Paused) )
dom->id = i + 1; dom->id = i + 1;
} }
if (iid) {
data->pFuncs->pfnComUnallocMem(iid);
iid = NULL;
}
if (matched == 1) if (matched == 1)
break; break;
} }
} }
/* Do the cleanup and take care you dont leak any memory */ /* Do the cleanup and take care you dont leak any memory */
if (machineName) if (machineNameUtf8)
data->pFuncs->pfnUtf8Free(machineName); data->pFuncs->pfnUtf8Free(machineNameUtf8);
if (machineNameUtf16) if (machineNameUtf16)
data->pFuncs->pfnComUnallocMem(machineNameUtf16); data->pFuncs->pfnComUnallocMem(machineNameUtf16);
for (i = 0; i < machineCnt; ++i) { for (i = 0; i < machineCnt; ++i) {
...@@ -710,8 +872,8 @@ static virDomainPtr vboxDomainLookupByName(virConnectPtr conn, const char *name) ...@@ -710,8 +872,8 @@ static virDomainPtr vboxDomainLookupByName(virConnectPtr conn, const char *name)
IMachine **machines = NULL; IMachine **machines = NULL;
PRUint32 machineCnt = 0; PRUint32 machineCnt = 0;
virDomainPtr dom = NULL; virDomainPtr dom = NULL;
nsID *iid = NULL; vboxIID *iid = NULL;
char *machineName = NULL; char *machineNameUtf8 = NULL;
PRUnichar *machineNameUtf16 = NULL; PRUnichar *machineNameUtf16 = NULL;
unsigned char iidl[VIR_UUID_BUFLEN]; unsigned char iidl[VIR_UUID_BUFLEN];
int i, matched = 0; int i, matched = 0;
...@@ -735,16 +897,21 @@ static virDomainPtr vboxDomainLookupByName(virConnectPtr conn, const char *name) ...@@ -735,16 +897,21 @@ static virDomainPtr vboxDomainLookupByName(virConnectPtr conn, const char *name)
if (isAccessible) { if (isAccessible) {
machine->vtbl->GetName(machine, &machineNameUtf16); machine->vtbl->GetName(machine, &machineNameUtf16);
data->pFuncs->pfnUtf16ToUtf8(machineNameUtf16, &machineName); data->pFuncs->pfnUtf16ToUtf8(machineNameUtf16, &machineNameUtf8);
if (machineName && (STREQ(name, machineName))) { if (STREQ(name, machineNameUtf8)) {
PRUint32 state; PRUint32 state;
matched = 1; matched = 1;
machine->vtbl->GetId(machine, &iid); machine->vtbl->GetId(machine, &iid);
nsIDtoChar(iidl, iid); vboxIIDToUUID(iidl, iid);
#if VBOX_API_VERSION == 2002
vboxIIDUnalloc(iid);
#else
vboxIIDFree(iid);
#endif
machine->vtbl->GetState(machine, &state); machine->vtbl->GetState(machine, &state);
...@@ -754,16 +921,22 @@ static virDomainPtr vboxDomainLookupByName(virConnectPtr conn, const char *name) ...@@ -754,16 +921,22 @@ static virDomainPtr vboxDomainLookupByName(virConnectPtr conn, const char *name)
* itself, so need not worry. * itself, so need not worry.
*/ */
dom = virGetDomain(conn, machineName, iidl); dom = virGetDomain(conn, machineNameUtf8, iidl);
if (dom) if (dom)
if ((state == MachineState_Running) || if ((state == MachineState_Starting) ||
(state == MachineState_Running) ||
(state == MachineState_Stuck) ||
(state == MachineState_Stopping) ||
(state == MachineState_Saving) ||
(state == MachineState_Restoring) ||
(state == MachineState_Discarding) ||
(state == MachineState_Paused) ) (state == MachineState_Paused) )
dom->id = i + 1; dom->id = i + 1;
} }
if (machineName) { if (machineNameUtf8) {
data->pFuncs->pfnUtf8Free(machineName); data->pFuncs->pfnUtf8Free(machineNameUtf8);
machineName = NULL; machineNameUtf8 = NULL;
} }
if (machineNameUtf16) { if (machineNameUtf16) {
data->pFuncs->pfnComUnallocMem(machineNameUtf16); data->pFuncs->pfnComUnallocMem(machineNameUtf16);
...@@ -775,8 +948,6 @@ static virDomainPtr vboxDomainLookupByName(virConnectPtr conn, const char *name) ...@@ -775,8 +948,6 @@ static virDomainPtr vboxDomainLookupByName(virConnectPtr conn, const char *name)
} }
/* Do the cleanup and take care you dont leak any memory */ /* Do the cleanup and take care you dont leak any memory */
if (iid)
data->pFuncs->pfnComUnallocMem(iid);
for (i = 0; i < machineCnt; ++i) { for (i = 0; i < machineCnt; ++i) {
if (machines[i]) if (machines[i])
machines[i]->vtbl->nsisupports.Release((nsISupports *)machines[i]); machines[i]->vtbl->nsisupports.Release((nsISupports *)machines[i]);
...@@ -790,20 +961,22 @@ static int vboxDomainSuspend(virDomainPtr dom) { ...@@ -790,20 +961,22 @@ static int vboxDomainSuspend(virDomainPtr dom) {
nsresult rc; nsresult rc;
vboxGlobalData *data = dom->conn->privateData; vboxGlobalData *data = dom->conn->privateData;
IMachine *machine = NULL; IMachine *machine = NULL;
nsID *iid = NULL; vboxIID *iid = NULL;
IConsole *console = NULL; IConsole *console = NULL;
PRUint32 state; PRUint32 state;
int ret = -1; int ret = -1;
#if VBOX_API_VERSION == 2002
if (VIR_ALLOC(iid) < 0) { if (VIR_ALLOC(iid) < 0) {
virReportOOMError(dom->conn); virReportOOMError(dom->conn);
goto cleanup; goto cleanup;
} }
#endif
if (data->vboxObj) { if (data->vboxObj) {
PRBool isAccessible = PR_FALSE; PRBool isAccessible = PR_FALSE;
nsIDFromChar(iid, dom->uuid); vboxIIDFromUUID(dom->uuid, iid);
rc = data->vboxObj->vtbl->GetMachine(data->vboxObj, iid, &machine); rc = data->vboxObj->vtbl->GetMachine(data->vboxObj, iid, &machine);
if (NS_FAILED(rc)) { if (NS_FAILED(rc)) {
vboxError(dom->conn, VIR_ERR_INVALID_DOMAIN, vboxError(dom->conn, VIR_ERR_INVALID_DOMAIN,
...@@ -844,7 +1017,7 @@ cleanup: ...@@ -844,7 +1017,7 @@ cleanup:
if (machine) if (machine)
machine->vtbl->nsisupports.Release((nsISupports *)machine); machine->vtbl->nsisupports.Release((nsISupports *)machine);
VIR_FREE(iid); vboxIIDFree(iid);
return ret; return ret;
} }
...@@ -852,20 +1025,22 @@ static int vboxDomainResume(virDomainPtr dom) { ...@@ -852,20 +1025,22 @@ static int vboxDomainResume(virDomainPtr dom) {
nsresult rc; nsresult rc;
vboxGlobalData *data = dom->conn->privateData; vboxGlobalData *data = dom->conn->privateData;
IMachine *machine = NULL; IMachine *machine = NULL;
nsID *iid = NULL; vboxIID *iid = NULL;
IConsole *console = NULL; IConsole *console = NULL;
PRUint32 state = MachineState_Null; PRUint32 state = MachineState_Null;
int ret = -1; int ret = -1;
#if VBOX_API_VERSION == 2002
if (VIR_ALLOC(iid) < 0) { if (VIR_ALLOC(iid) < 0) {
virReportOOMError(dom->conn); virReportOOMError(dom->conn);
goto cleanup; goto cleanup;
} }
#endif
if (data->vboxObj) { if (data->vboxObj) {
PRBool isAccessible = PR_FALSE; PRBool isAccessible = PR_FALSE;
nsIDFromChar(iid, dom->uuid); vboxIIDFromUUID(dom->uuid, iid);
rc = data->vboxObj->vtbl->GetMachine(data->vboxObj, iid, &machine); rc = data->vboxObj->vtbl->GetMachine(data->vboxObj, iid, &machine);
if (NS_FAILED(rc)) { if (NS_FAILED(rc)) {
vboxError(dom->conn, VIR_ERR_INVALID_DOMAIN, vboxError(dom->conn, VIR_ERR_INVALID_DOMAIN,
...@@ -906,7 +1081,7 @@ cleanup: ...@@ -906,7 +1081,7 @@ cleanup:
if (machine) if (machine)
machine->vtbl->nsisupports.Release((nsISupports *)machine); machine->vtbl->nsisupports.Release((nsISupports *)machine);
VIR_FREE(iid); vboxIIDFree(iid);
return ret; return ret;
} }
...@@ -914,20 +1089,22 @@ static int vboxDomainShutdown(virDomainPtr dom) { ...@@ -914,20 +1089,22 @@ static int vboxDomainShutdown(virDomainPtr dom) {
nsresult rc; nsresult rc;
vboxGlobalData *data = dom->conn->privateData; vboxGlobalData *data = dom->conn->privateData;
IMachine *machine = NULL; IMachine *machine = NULL;
nsID *iid = NULL; vboxIID *iid = NULL;
IConsole *console = NULL; IConsole *console = NULL;
PRUint32 state = MachineState_Null; PRUint32 state = MachineState_Null;
int ret = -1; int ret = -1;
#if VBOX_API_VERSION == 2002
if (VIR_ALLOC(iid) < 0) { if (VIR_ALLOC(iid) < 0) {
virReportOOMError(dom->conn); virReportOOMError(dom->conn);
goto cleanup; goto cleanup;
} }
#endif
if(data->vboxObj) { if(data->vboxObj) {
PRBool isAccessible = PR_FALSE; PRBool isAccessible = PR_FALSE;
nsIDFromChar(iid, dom->uuid); vboxIIDFromUUID(dom->uuid, iid);
rc = data->vboxObj->vtbl->GetMachine(data->vboxObj, iid, &machine); rc = data->vboxObj->vtbl->GetMachine(data->vboxObj, iid, &machine);
if (NS_FAILED(rc)) { if (NS_FAILED(rc)) {
vboxError(dom->conn, VIR_ERR_INVALID_DOMAIN, vboxError(dom->conn, VIR_ERR_INVALID_DOMAIN,
...@@ -967,7 +1144,7 @@ cleanup: ...@@ -967,7 +1144,7 @@ cleanup:
if (machine) if (machine)
machine->vtbl->nsisupports.Release((nsISupports *)machine); machine->vtbl->nsisupports.Release((nsISupports *)machine);
VIR_FREE(iid); vboxIIDFree(iid);
return ret; return ret;
} }
...@@ -975,20 +1152,22 @@ static int vboxDomainReboot(virDomainPtr dom, unsigned int flags ATTRIBUTE_UNUSE ...@@ -975,20 +1152,22 @@ static int vboxDomainReboot(virDomainPtr dom, unsigned int flags ATTRIBUTE_UNUSE
nsresult rc; nsresult rc;
vboxGlobalData *data = dom->conn->privateData; vboxGlobalData *data = dom->conn->privateData;
IMachine *machine = NULL; IMachine *machine = NULL;
nsID *iid = NULL; vboxIID *iid = NULL;
IConsole *console = NULL; IConsole *console = NULL;
PRUint32 state = MachineState_Null; PRUint32 state = MachineState_Null;
int ret = -1; int ret = -1;
#if VBOX_API_VERSION == 2002
if (VIR_ALLOC(iid) < 0) { if (VIR_ALLOC(iid) < 0) {
virReportOOMError(dom->conn); virReportOOMError(dom->conn);
goto cleanup; goto cleanup;
} }
#endif
if(data->vboxObj) { if(data->vboxObj) {
PRBool isAccessible = PR_FALSE; PRBool isAccessible = PR_FALSE;
nsIDFromChar(iid, dom->uuid); vboxIIDFromUUID(dom->uuid, iid);
rc = data->vboxObj->vtbl->GetMachine(data->vboxObj, iid, &machine); rc = data->vboxObj->vtbl->GetMachine(data->vboxObj, iid, &machine);
if (NS_FAILED(rc)) { if (NS_FAILED(rc)) {
vboxError(dom->conn, VIR_ERR_INVALID_DOMAIN, vboxError(dom->conn, VIR_ERR_INVALID_DOMAIN,
...@@ -1024,7 +1203,7 @@ cleanup: ...@@ -1024,7 +1203,7 @@ cleanup:
if (machine) if (machine)
machine->vtbl->nsisupports.Release((nsISupports *)machine); machine->vtbl->nsisupports.Release((nsISupports *)machine);
VIR_FREE(iid); vboxIIDFree(iid);
return ret; return ret;
} }
...@@ -1032,20 +1211,22 @@ static int vboxDomainDestroy(virDomainPtr dom) { ...@@ -1032,20 +1211,22 @@ static int vboxDomainDestroy(virDomainPtr dom) {
nsresult rc; nsresult rc;
vboxGlobalData *data = dom->conn->privateData; vboxGlobalData *data = dom->conn->privateData;
IMachine *machine = NULL; IMachine *machine = NULL;
nsID *iid = NULL; vboxIID *iid = NULL;
IConsole *console = NULL; IConsole *console = NULL;
PRUint32 state = MachineState_Null; PRUint32 state = MachineState_Null;
int ret = -1; int ret = -1;
#if VBOX_API_VERSION == 2002
if (VIR_ALLOC(iid) < 0) { if (VIR_ALLOC(iid) < 0) {
virReportOOMError(dom->conn); virReportOOMError(dom->conn);
goto cleanup; goto cleanup;
} }
#endif
if(data->vboxObj) { if(data->vboxObj) {
PRBool isAccessible = PR_FALSE; PRBool isAccessible = PR_FALSE;
nsIDFromChar(iid, dom->uuid); vboxIIDFromUUID(dom->uuid, iid);
rc = data->vboxObj->vtbl->GetMachine(data->vboxObj, iid, &machine); rc = data->vboxObj->vtbl->GetMachine(data->vboxObj, iid, &machine);
if (NS_FAILED(rc)) { if (NS_FAILED(rc)) {
vboxError(dom->conn, VIR_ERR_INVALID_DOMAIN, vboxError(dom->conn, VIR_ERR_INVALID_DOMAIN,
...@@ -1069,7 +1250,15 @@ static int vboxDomainDestroy(virDomainPtr dom) { ...@@ -1069,7 +1250,15 @@ static int vboxDomainDestroy(virDomainPtr dom) {
data->vboxObj->vtbl->OpenExistingSession(data->vboxObj, data->vboxSession, iid); data->vboxObj->vtbl->OpenExistingSession(data->vboxObj, data->vboxSession, iid);
data->vboxSession->vtbl->GetConsole(data->vboxSession, &console); data->vboxSession->vtbl->GetConsole(data->vboxSession, &console);
if (console) { if (console) {
#if VBOX_API_VERSION == 2002
console->vtbl->PowerDown(console); console->vtbl->PowerDown(console);
#else
IProgress *progress;
console->vtbl->PowerDown(console, &progress);
if (progress)
progress->vtbl->nsisupports.Release((nsISupports *)progress);
#endif
console->vtbl->nsisupports.Release((nsISupports *)console); console->vtbl->nsisupports.Release((nsISupports *)console);
ret = 0; ret = 0;
} }
...@@ -1081,7 +1270,7 @@ cleanup: ...@@ -1081,7 +1270,7 @@ cleanup:
if (machine) if (machine)
machine->vtbl->nsisupports.Release((nsISupports *)machine); machine->vtbl->nsisupports.Release((nsISupports *)machine);
VIR_FREE(iid); vboxIIDFree(iid);
return ret; return ret;
} }
...@@ -1098,19 +1287,21 @@ static int vboxDomainSetMemory(virDomainPtr dom, unsigned long memory) { ...@@ -1098,19 +1287,21 @@ static int vboxDomainSetMemory(virDomainPtr dom, unsigned long memory) {
nsresult rc; nsresult rc;
vboxGlobalData *data = dom->conn->privateData; vboxGlobalData *data = dom->conn->privateData;
IMachine *machine = NULL; IMachine *machine = NULL;
nsID *iid = NULL; vboxIID *iid = NULL;
PRUint32 state = MachineState_Null; PRUint32 state = MachineState_Null;
int ret = -1; int ret = -1;
#if VBOX_API_VERSION == 2002
if (VIR_ALLOC(iid) < 0) { if (VIR_ALLOC(iid) < 0) {
virReportOOMError(dom->conn); virReportOOMError(dom->conn);
goto cleanup; goto cleanup;
} }
#endif
if(data->vboxObj) { if(data->vboxObj) {
PRBool isAccessible = PR_FALSE; PRBool isAccessible = PR_FALSE;
nsIDFromChar(iid, dom->uuid); vboxIIDFromUUID(dom->uuid, iid);
rc = data->vboxObj->vtbl->GetMachine(data->vboxObj, iid, &machine); rc = data->vboxObj->vtbl->GetMachine(data->vboxObj, iid, &machine);
if (NS_FAILED(rc)) { if (NS_FAILED(rc)) {
vboxError(dom->conn, VIR_ERR_INVALID_DOMAIN, vboxError(dom->conn, VIR_ERR_INVALID_DOMAIN,
...@@ -1155,7 +1346,7 @@ cleanup: ...@@ -1155,7 +1346,7 @@ cleanup:
if (machine) if (machine)
machine->vtbl->nsisupports.Release((nsISupports *)machine); machine->vtbl->nsisupports.Release((nsISupports *)machine);
VIR_FREE(iid); vboxIIDFree(iid);
return ret; return ret;
} }
...@@ -1275,7 +1466,7 @@ static int vboxDomainSave(virDomainPtr dom, const char *path ATTRIBUTE_UNUSED) { ...@@ -1275,7 +1466,7 @@ static int vboxDomainSave(virDomainPtr dom, const char *path ATTRIBUTE_UNUSED) {
nsresult rc; nsresult rc;
vboxGlobalData *data = dom->conn->privateData; vboxGlobalData *data = dom->conn->privateData;
IConsole *console = NULL; IConsole *console = NULL;
nsID *iid = NULL; vboxIID *iid = NULL;
int ret = -1; int ret = -1;
/* VirtualBox currently doesn't support saving to a file /* VirtualBox currently doesn't support saving to a file
...@@ -1284,15 +1475,17 @@ static int vboxDomainSave(virDomainPtr dom, const char *path ATTRIBUTE_UNUSED) { ...@@ -1284,15 +1475,17 @@ static int vboxDomainSave(virDomainPtr dom, const char *path ATTRIBUTE_UNUSED) {
* this behaviour once get the VirtualBox API in right * this behaviour once get the VirtualBox API in right
* shape to do this * shape to do this
*/ */
#if VBOX_API_VERSION == 2002
if (VIR_ALLOC(iid) < 0) { if (VIR_ALLOC(iid) < 0) {
virReportOOMError(dom->conn); virReportOOMError(dom->conn);
goto cleanup; goto cleanup;
} }
#endif
if(data->vboxObj) { if(data->vboxObj) {
nsIDFromChar(iid, dom->uuid);
/* Open a Session for the machine */ /* Open a Session for the machine */
vboxIIDFromUUID(dom->uuid, iid);
rc = data->vboxObj->vtbl->OpenExistingSession(data->vboxObj, data->vboxSession, iid); rc = data->vboxObj->vtbl->OpenExistingSession(data->vboxObj, data->vboxSession, iid);
if (NS_SUCCEEDED(rc)) { if (NS_SUCCEEDED(rc)) {
rc = data->vboxSession->vtbl->GetConsole(data->vboxSession, &console); rc = data->vboxSession->vtbl->GetConsole(data->vboxSession, &console);
...@@ -1302,11 +1495,15 @@ static int vboxDomainSave(virDomainPtr dom, const char *path ATTRIBUTE_UNUSED) { ...@@ -1302,11 +1495,15 @@ static int vboxDomainSave(virDomainPtr dom, const char *path ATTRIBUTE_UNUSED) {
console->vtbl->SaveState(console, &progress); console->vtbl->SaveState(console, &progress);
if (progress) { if (progress) {
#if VBOX_API_VERSION == 2002
nsresult resultCode; nsresult resultCode;
#else
PRInt32 resultCode;
#endif
progress->vtbl->WaitForCompletion(progress, -1); progress->vtbl->WaitForCompletion(progress, -1);
progress->vtbl->GetResultCode(progress, &resultCode); progress->vtbl->GetResultCode(progress, &resultCode);
if (NS_SUCCEEDED(rc)) { if (NS_SUCCEEDED(resultCode)) {
ret = 0; ret = 0;
} }
progress->vtbl->nsisupports.Release((nsISupports *)progress); progress->vtbl->nsisupports.Release((nsISupports *)progress);
...@@ -1316,17 +1513,17 @@ static int vboxDomainSave(virDomainPtr dom, const char *path ATTRIBUTE_UNUSED) { ...@@ -1316,17 +1513,17 @@ static int vboxDomainSave(virDomainPtr dom, const char *path ATTRIBUTE_UNUSED) {
data->vboxSession->vtbl->Close(data->vboxSession); data->vboxSession->vtbl->Close(data->vboxSession);
} }
DEBUG("UUID of machine being saved:" #if VBOX_API_VERSION == 2002
"{%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}", DEBUGUUID("UUID of machine being saved:", iid);
(unsigned)iid->m0, (unsigned)iid->m1, (unsigned)iid->m2, #else
(unsigned)iid->m3[0], (unsigned)iid->m3[1], DEBUGPRUnichar("UUID of machine being saved:", iid);
(unsigned)iid->m3[2], (unsigned)iid->m3[3], #endif
(unsigned)iid->m3[4], (unsigned)iid->m3[5],
(unsigned)iid->m3[6], (unsigned)iid->m3[7]);
} }
#if VBOX_API_VERSION == 2002
cleanup: cleanup:
VIR_FREE(iid); #endif
vboxIIDFree(iid);
return ret; return ret;
} }
...@@ -1335,14 +1532,16 @@ static char *vboxDomainDumpXML(virDomainPtr dom, int flags) { ...@@ -1335,14 +1532,16 @@ static char *vboxDomainDumpXML(virDomainPtr dom, int flags) {
vboxGlobalData *data = dom->conn->privateData; vboxGlobalData *data = dom->conn->privateData;
virDomainDefPtr def = NULL; virDomainDefPtr def = NULL;
IMachine *machine = NULL; IMachine *machine = NULL;
nsID *iid = NULL; vboxIID *iid = NULL;
char *ret = NULL; char *ret = NULL;
int gotAllABoutDef = -1; int gotAllABoutDef = -1;
#if VBOX_API_VERSION == 2002
if (VIR_ALLOC(iid) < 0) { if (VIR_ALLOC(iid) < 0) {
virReportOOMError(dom->conn); virReportOOMError(dom->conn);
goto cleanup; goto cleanup;
} }
#endif
if (VIR_ALLOC(def) < 0) { if (VIR_ALLOC(def) < 0) {
virReportOOMError(dom->conn); virReportOOMError(dom->conn);
...@@ -1350,8 +1549,8 @@ static char *vboxDomainDumpXML(virDomainPtr dom, int flags) { ...@@ -1350,8 +1549,8 @@ static char *vboxDomainDumpXML(virDomainPtr dom, int flags) {
} }
if(data->vboxObj) { if(data->vboxObj) {
nsIDFromChar(iid, dom->uuid);
vboxIIDFromUUID(dom->uuid, iid);
rc = data->vboxObj->vtbl->GetMachine(data->vboxObj, iid, &machine); rc = data->vboxObj->vtbl->GetMachine(data->vboxObj, iid, &machine);
if (NS_SUCCEEDED(rc) && machine) { if (NS_SUCCEEDED(rc) && machine) {
PRBool accessible = PR_FALSE; PRBool accessible = PR_FALSE;
...@@ -2220,7 +2419,7 @@ static char *vboxDomainDumpXML(virDomainPtr dom, int flags) { ...@@ -2220,7 +2419,7 @@ static char *vboxDomainDumpXML(virDomainPtr dom, int flags) {
ret = virDomainDefFormat(dom->conn, def, flags); ret = virDomainDefFormat(dom->conn, def, flags);
cleanup: cleanup:
VIR_FREE(iid); vboxIIDFree(iid);
virDomainDefFree(def); virDomainDefFree(def);
return ret; return ret;
} }
...@@ -2257,7 +2456,13 @@ static int vboxListDefinedDomains(virConnectPtr conn, char ** const names, int m ...@@ -2257,7 +2456,13 @@ static int vboxListDefinedDomains(virConnectPtr conn, char ** const names, int m
machine->vtbl->GetAccessible(machine, &isAccessible); machine->vtbl->GetAccessible(machine, &isAccessible);
if (isAccessible) { if (isAccessible) {
machine->vtbl->GetState(machine, &state); machine->vtbl->GetState(machine, &state);
if ((state != MachineState_Running) && if ((state != MachineState_Starting) &&
(state != MachineState_Running) &&
(state != MachineState_Stuck) &&
(state != MachineState_Stopping) &&
(state != MachineState_Saving) &&
(state != MachineState_Restoring) &&
(state != MachineState_Discarding) &&
(state != MachineState_Paused) ) { (state != MachineState_Paused) ) {
machine->vtbl->GetName(machine, &machineNameUtf16); machine->vtbl->GetName(machine, &machineNameUtf16);
data->pFuncs->pfnUtf16ToUtf8(machineNameUtf16, &machineName); data->pFuncs->pfnUtf16ToUtf8(machineNameUtf16, &machineName);
...@@ -2316,7 +2521,13 @@ static int vboxNumOfDefinedDomains(virConnectPtr conn) { ...@@ -2316,7 +2521,13 @@ static int vboxNumOfDefinedDomains(virConnectPtr conn) {
machine->vtbl->GetAccessible(machine, &isAccessible); machine->vtbl->GetAccessible(machine, &isAccessible);
if (isAccessible) { if (isAccessible) {
machine->vtbl->GetState(machine, &state); machine->vtbl->GetState(machine, &state);
if ((state != MachineState_Running) && if ((state != MachineState_Starting) &&
(state != MachineState_Running) &&
(state != MachineState_Stuck) &&
(state != MachineState_Stopping) &&
(state != MachineState_Saving) &&
(state != MachineState_Restoring) &&
(state != MachineState_Discarding) &&
(state != MachineState_Paused) ) { (state != MachineState_Paused) ) {
ret++; ret++;
} }
...@@ -2369,12 +2580,12 @@ static int vboxDomainCreate(virDomainPtr dom) { ...@@ -2369,12 +2580,12 @@ static int vboxDomainCreate(virDomainPtr dom) {
machine->vtbl->GetAccessible(machine, &isAccessible); machine->vtbl->GetAccessible(machine, &isAccessible);
if (isAccessible) { if (isAccessible) {
nsID *iid = NULL; vboxIID *iid = NULL;
machine->vtbl->GetId(machine, &iid); machine->vtbl->GetId(machine, &iid);
if (!iid) if (!iid)
continue; continue;
nsIDtoChar(iidl, iid); vboxIIDToUUID(iidl, iid);
if (memcmp(dom->uuid, iidl, VIR_UUID_BUFLEN) == 0) { if (memcmp(dom->uuid, iidl, VIR_UUID_BUFLEN) == 0) {
PRUint32 state = MachineState_Null; PRUint32 state = MachineState_Null;
...@@ -2496,7 +2707,11 @@ static int vboxDomainCreate(virDomainPtr dom) { ...@@ -2496,7 +2707,11 @@ static int vboxDomainCreate(virDomainPtr dom) {
ret = -1; ret = -1;
} else { } else {
PRBool completed = 0; PRBool completed = 0;
#if VBOX_API_VERSION == 2002
nsresult resultCode; nsresult resultCode;
#else
PRInt32 resultCode;
#endif
progress->vtbl->WaitForCompletion(progress, -1); progress->vtbl->WaitForCompletion(progress, -1);
rc = progress->vtbl->GetCompleted(progress, &completed); rc = progress->vtbl->GetCompleted(progress, &completed);
if (NS_FAILED(rc)) { if (NS_FAILED(rc)) {
...@@ -2526,9 +2741,11 @@ static int vboxDomainCreate(virDomainPtr dom) { ...@@ -2526,9 +2741,11 @@ static int vboxDomainCreate(virDomainPtr dom) {
ret = -1; ret = -1;
} }
} }
#if VBOX_API_VERSION == 2002
if (iid) vboxIIDUnalloc(iid);
data->pFuncs->pfnComUnallocMem(iid); #else
vboxIIDFree(iid);
#endif
if (ret != -1) if (ret != -1)
break; break;
} }
...@@ -2550,13 +2767,13 @@ cleanup: ...@@ -2550,13 +2767,13 @@ cleanup:
static virDomainPtr vboxDomainDefineXML(virConnectPtr conn, const char *xml) { static virDomainPtr vboxDomainDefineXML(virConnectPtr conn, const char *xml) {
nsresult rc; nsresult rc;
vboxGlobalData *data = conn->privateData; vboxGlobalData *data = conn->privateData;
IMachine *machine = NULL; IMachine *machine = NULL;
IBIOSSettings *bios = NULL; IBIOSSettings *bios = NULL;
virDomainPtr dom = NULL; virDomainPtr dom = NULL;
nsID *iid = NULL; vboxIID *iid = NULL;
nsID *mchiid = NULL; vboxIID *mchiid = NULL;
virDomainDefPtr def = NULL; virDomainDefPtr def = NULL;
PRUnichar *machineNameUtf16 = NULL; PRUnichar *machineNameUtf16 = NULL;
if (!(def = virDomainDefParseString(conn, data->caps, xml, if (!(def = virDomainDefParseString(conn, data->caps, xml,
...@@ -2564,14 +2781,16 @@ static virDomainPtr vboxDomainDefineXML(virConnectPtr conn, const char *xml) { ...@@ -2564,14 +2781,16 @@ static virDomainPtr vboxDomainDefineXML(virConnectPtr conn, const char *xml) {
goto cleanup; goto cleanup;
} }
#if VBOX_API_VERSION == 2002
if (VIR_ALLOC(iid) < 0) { if (VIR_ALLOC(iid) < 0) {
virReportOOMError(conn); virReportOOMError(conn);
goto cleanup; goto cleanup;
} }
#endif
if (data->vboxObj) { if (data->vboxObj) {
data->pFuncs->pfnUtf8ToUtf16(def->name, &machineNameUtf16); data->pFuncs->pfnUtf8ToUtf16(def->name, &machineNameUtf16);
nsIDFromChar(iid, def->uuid); vboxIIDFromUUID(def->uuid, iid);
rc = data->vboxObj->vtbl->CreateMachine(data->vboxObj, rc = data->vboxObj->vtbl->CreateMachine(data->vboxObj,
machineNameUtf16, machineNameUtf16,
NULL, NULL,
...@@ -2725,18 +2944,26 @@ static virDomainPtr vboxDomainDefineXML(virConnectPtr conn, const char *xml) { ...@@ -2725,18 +2944,26 @@ static virDomainPtr vboxDomainDefineXML(virConnectPtr conn, const char *xml) {
machine->vtbl->GetDVDDrive(machine, &dvdDrive); machine->vtbl->GetDVDDrive(machine, &dvdDrive);
if (dvdDrive) { if (dvdDrive) {
IDVDImage *dvdImage = NULL; IDVDImage *dvdImage = NULL;
PRUnichar *dvdfileUtf16 = NULL; PRUnichar *dvdfileUtf16 = NULL;
nsID *dvduuid = NULL; vboxIID *dvduuid = NULL;
#if VBOX_API_VERSION == 2002
nsID dvdemptyuuid; nsID dvdemptyuuid;
memset(&dvdemptyuuid, 0, sizeof(dvdemptyuuid)); memset(&dvdemptyuuid, 0, sizeof(dvdemptyuuid));
#else
PRUnichar *dvdemptyuuidUtf16 = NULL;
#endif
data->pFuncs->pfnUtf8ToUtf16(def->disks[i]->src, &dvdfileUtf16); data->pFuncs->pfnUtf8ToUtf16(def->disks[i]->src, &dvdfileUtf16);
data->vboxObj->vtbl->FindDVDImage(data->vboxObj, dvdfileUtf16, &dvdImage); data->vboxObj->vtbl->FindDVDImage(data->vboxObj, dvdfileUtf16, &dvdImage);
if (!dvdImage) { if (!dvdImage) {
#if VBOX_API_VERSION == 2002
data->vboxObj->vtbl->OpenDVDImage(data->vboxObj, dvdfileUtf16, &dvdemptyuuid, &dvdImage); data->vboxObj->vtbl->OpenDVDImage(data->vboxObj, dvdfileUtf16, &dvdemptyuuid, &dvdImage);
#else
data->vboxObj->vtbl->OpenDVDImage(data->vboxObj, dvdfileUtf16, dvdemptyuuidUtf16, &dvdImage);
#endif
} }
if (dvdImage) { if (dvdImage) {
rc = dvdImage->vtbl->imedium.GetId((IMedium *)dvdImage, &dvduuid); rc = dvdImage->vtbl->imedium.GetId((IMedium *)dvdImage, &dvduuid);
...@@ -2751,18 +2978,21 @@ static virDomainPtr vboxDomainDefineXML(virConnectPtr conn, const char *xml) { ...@@ -2751,18 +2978,21 @@ static virDomainPtr vboxDomainDefineXML(virConnectPtr conn, const char *xml) {
"could not attach the file to cdrom", "could not attach the file to cdrom",
def->disks[i]->src, (unsigned)rc); def->disks[i]->src, (unsigned)rc);
} else { } else {
DEBUG("CD/DVDImage UUID:{%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}", #if VBOX_API_VERSION == 2002
(unsigned)dvduuid->m0, (unsigned)dvduuid->m1, (unsigned)dvduuid->m2, DEBUGUUID("CD/DVDImage UUID:", dvduuid);
(unsigned)dvduuid->m3[0], (unsigned)dvduuid->m3[1], #else
(unsigned)dvduuid->m3[2], (unsigned)dvduuid->m3[3], DEBUGPRUnichar("CD/DVDImage UUID:", dvduuid);
(unsigned)dvduuid->m3[4], (unsigned)dvduuid->m3[5], #endif
(unsigned)dvduuid->m3[6], (unsigned)dvduuid->m3[7]);
} }
data->pFuncs->pfnComUnallocMem(dvduuid);
} }
dvdImage->vtbl->imedium.nsisupports.Release((nsISupports *)dvdImage); dvdImage->vtbl->imedium.nsisupports.Release((nsISupports *)dvdImage);
} }
#if VBOX_API_VERSION == 2002
vboxIIDUnalloc(dvduuid);
#else
vboxIIDFree(dvduuid);
#endif
data->pFuncs->pfnUtf16Free(dvdfileUtf16); data->pFuncs->pfnUtf16Free(dvdfileUtf16);
dvdDrive->vtbl->nsisupports.Release((nsISupports *)dvdDrive); dvdDrive->vtbl->nsisupports.Release((nsISupports *)dvdDrive);
} }
...@@ -2772,10 +3002,10 @@ static virDomainPtr vboxDomainDefineXML(virConnectPtr conn, const char *xml) { ...@@ -2772,10 +3002,10 @@ static virDomainPtr vboxDomainDefineXML(virConnectPtr conn, const char *xml) {
if (def->disks[i]->type == VIR_DOMAIN_DISK_TYPE_FILE) { if (def->disks[i]->type == VIR_DOMAIN_DISK_TYPE_FILE) {
IHardDisk *hardDisk = NULL; IHardDisk *hardDisk = NULL;
PRUnichar *hddfileUtf16 = NULL; PRUnichar *hddfileUtf16 = NULL;
nsID *hdduuid = NULL; vboxIID *hdduuid = NULL;
/* Current Limitation: Harddisk can't be connected to /* Current Limitation: Harddisk can't be connected to
* Secondary Master as Secondary Master is always used * Secondary Master as Secondary Master is always used
* for CD/DVD Drive, so not connect the harddisk if it * for CD/DVD Drive, so don't connect the harddisk if it
* is requested to be connected to Secondary master * is requested to be connected to Secondary master
*/ */
...@@ -2784,10 +3014,21 @@ static virDomainPtr vboxDomainDefineXML(virConnectPtr conn, const char *xml) { ...@@ -2784,10 +3014,21 @@ static virDomainPtr vboxDomainDefineXML(virConnectPtr conn, const char *xml) {
data->vboxObj->vtbl->FindHardDisk(data->vboxObj, hddfileUtf16, &hardDisk); data->vboxObj->vtbl->FindHardDisk(data->vboxObj, hddfileUtf16, &hardDisk);
if (!hardDisk) { if (!hardDisk) {
#if VBOX_API_VERSION == 2002
data->vboxObj->vtbl->OpenHardDisk(data->vboxObj, data->vboxObj->vtbl->OpenHardDisk(data->vboxObj,
hddfileUtf16, hddfileUtf16,
AccessMode_ReadWrite, AccessMode_ReadWrite,
&hardDisk); &hardDisk);
#else
data->vboxObj->vtbl->OpenHardDisk(data->vboxObj,
hddfileUtf16,
AccessMode_ReadWrite,
0,
NULL,
0,
NULL,
&hardDisk);
#endif
} }
if (hardDisk) { if (hardDisk) {
...@@ -2828,9 +3069,11 @@ static virDomainPtr vboxDomainDefineXML(virConnectPtr conn, const char *xml) { ...@@ -2828,9 +3069,11 @@ static virDomainPtr vboxDomainDefineXML(virConnectPtr conn, const char *xml) {
device = 1; device = 1;
} }
rc = machine->vtbl->AttachHardDisk(machine, hdduuid, rc = machine->vtbl->AttachHardDisk(machine,
hdduuid,
hddcnameUtf16, hddcnameUtf16,
channel, device); channel,
device);
data->pFuncs->pfnUtf16Free(hddcnameUtf16); data->pFuncs->pfnUtf16Free(hddcnameUtf16);
if (NS_FAILED(rc)) { if (NS_FAILED(rc)) {
...@@ -2838,21 +3081,22 @@ static virDomainPtr vboxDomainDefineXML(virConnectPtr conn, const char *xml) { ...@@ -2838,21 +3081,22 @@ static virDomainPtr vboxDomainDefineXML(virConnectPtr conn, const char *xml) {
"could not attach the file as harddisk", "could not attach the file as harddisk",
def->disks[i]->src, (unsigned)rc); def->disks[i]->src, (unsigned)rc);
} else { } else {
DEBUG("Attached HDD with UUID:" #if VBOX_API_VERSION == 2002
"{%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}", DEBUGUUID("Attached HDD with UUID", hdduuid);
(unsigned)hdduuid->m0, (unsigned)hdduuid->m1, #else
(unsigned)hdduuid->m2, DEBUGPRUnichar("Attached HDD with UUID", hdduuid);
(unsigned)hdduuid->m3[0], (unsigned)hdduuid->m3[1], #endif
(unsigned)hdduuid->m3[2], (unsigned)hdduuid->m3[3],
(unsigned)hdduuid->m3[4], (unsigned)hdduuid->m3[5],
(unsigned)hdduuid->m3[6], (unsigned)hdduuid->m3[7]);
} }
} }
} }
data->pFuncs->pfnComUnallocMem(hdduuid);
} }
hardDisk->vtbl->imedium.nsisupports.Release((nsISupports *)hardDisk); hardDisk->vtbl->imedium.nsisupports.Release((nsISupports *)hardDisk);
} }
#if VBOX_API_VERSION == 2002
vboxIIDUnalloc(hdduuid);
#else
vboxIIDFree(hdduuid);
#endif
data->pFuncs->pfnUtf16Free(hddfileUtf16); data->pFuncs->pfnUtf16Free(hddfileUtf16);
} else if (def->disks[i]->type == VIR_DOMAIN_DISK_TYPE_BLOCK) { } else if (def->disks[i]->type == VIR_DOMAIN_DISK_TYPE_BLOCK) {
} }
...@@ -2863,20 +3107,31 @@ static virDomainPtr vboxDomainDefineXML(virConnectPtr conn, const char *xml) { ...@@ -2863,20 +3107,31 @@ static virDomainPtr vboxDomainDefineXML(virConnectPtr conn, const char *xml) {
if (floppyDrive) { if (floppyDrive) {
rc = floppyDrive->vtbl->SetEnabled(floppyDrive, 1); rc = floppyDrive->vtbl->SetEnabled(floppyDrive, 1);
if (NS_SUCCEEDED(rc)) { if (NS_SUCCEEDED(rc)) {
IFloppyImage *floppyImage = NULL; IFloppyImage *floppyImage = NULL;
PRUnichar *fdfileUtf16 = NULL; PRUnichar *fdfileUtf16 = NULL;
nsID *fduuid = NULL; vboxIID *fduuid = NULL;
#if VBOX_API_VERSION == 2002
nsID fdemptyuuid; nsID fdemptyuuid;
memset(&fdemptyuuid, 0, sizeof(fdemptyuuid)); memset(&fdemptyuuid, 0, sizeof(fdemptyuuid));
#else
PRUnichar *fdemptyuuidUtf16 = NULL;
#endif
data->pFuncs->pfnUtf8ToUtf16(def->disks[i]->src, &fdfileUtf16); data->pFuncs->pfnUtf8ToUtf16(def->disks[i]->src, &fdfileUtf16);
rc = data->vboxObj->vtbl->FindFloppyImage(data->vboxObj, fdfileUtf16, rc = data->vboxObj->vtbl->FindFloppyImage(data->vboxObj,
fdfileUtf16,
&floppyImage); &floppyImage);
if (!floppyImage) { if (!floppyImage) {
data->vboxObj->vtbl->OpenFloppyImage(data->vboxObj, fdfileUtf16, data->vboxObj->vtbl->OpenFloppyImage(data->vboxObj,
&fdemptyuuid, &floppyImage); fdfileUtf16,
#if VBOX_API_VERSION == 2002
&fdemptyuuid,
#else
fdemptyuuidUtf16,
#endif
&floppyImage);
} }
if (floppyImage) { if (floppyImage) {
...@@ -2892,19 +3147,20 @@ static virDomainPtr vboxDomainDefineXML(virConnectPtr conn, const char *xml) { ...@@ -2892,19 +3147,20 @@ static virDomainPtr vboxDomainDefineXML(virConnectPtr conn, const char *xml) {
"could not attach the file to floppy drive", "could not attach the file to floppy drive",
def->disks[i]->src, (unsigned)rc); def->disks[i]->src, (unsigned)rc);
} else { } else {
DEBUG("floppyImage UUID:" #if VBOX_API_VERSION == 2002
"{%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}", DEBUGUUID("floppyImage UUID", fduuid);
(unsigned)fduuid->m0, (unsigned)fduuid->m1, #else
(unsigned)fduuid->m2, DEBUGPRUnichar("floppyImage UUID", fduuid);
(unsigned)fduuid->m3[0], (unsigned)fduuid->m3[1], #endif
(unsigned)fduuid->m3[2], (unsigned)fduuid->m3[3],
(unsigned)fduuid->m3[4], (unsigned)fduuid->m3[5],
(unsigned)fduuid->m3[6], (unsigned)fduuid->m3[7]);
} }
data->pFuncs->pfnComUnallocMem(fduuid);
} }
floppyImage->vtbl->imedium.nsisupports.Release((nsISupports *)floppyImage); floppyImage->vtbl->imedium.nsisupports.Release((nsISupports *)floppyImage);
} }
#if VBOX_API_VERSION == 2002
vboxIIDUnalloc(fduuid);
#else
vboxIIDFree(fduuid);
#endif
data->pFuncs->pfnUtf16Free(fdfileUtf16); data->pFuncs->pfnUtf16Free(fdfileUtf16);
} }
floppyDrive->vtbl->nsisupports.Release((nsISupports *)floppyDrive); floppyDrive->vtbl->nsisupports.Release((nsISupports *)floppyDrive);
...@@ -2989,7 +3245,7 @@ static virDomainPtr vboxDomainDefineXML(virConnectPtr conn, const char *xml) { ...@@ -2989,7 +3245,7 @@ static virDomainPtr vboxDomainDefineXML(virConnectPtr conn, const char *xml) {
machine->vtbl->GetNetworkAdapter(machine, i, &adapter); machine->vtbl->GetNetworkAdapter(machine, i, &adapter);
if (adapter) { if (adapter) {
PRUnichar *MACAddress = NULL; PRUnichar *MACAddress = NULL;
adapter->vtbl->SetEnabled(adapter, 1); adapter->vtbl->SetEnabled(adapter, 1);
...@@ -3038,7 +3294,7 @@ static virDomainPtr vboxDomainDefineXML(virConnectPtr conn, const char *xml) { ...@@ -3038,7 +3294,7 @@ static virDomainPtr vboxDomainDefineXML(virConnectPtr conn, const char *xml) {
adapter->vtbl->AttachToHostOnlyInterface(adapter); adapter->vtbl->AttachToHostOnlyInterface(adapter);
if (def->nets[i]->data.network.name) { if (def->nets[i]->data.network.name) {
g_pVBoxFuncs->pfnUtf8ToUtf16(def->nets[i]->data.network.name, &hostInterface); data->pFuncs->pfnUtf8ToUtf16(def->nets[i]->data.network.name, &hostInterface);
adapter->vtbl->SetHostInterface(adapter, hostInterface); adapter->vtbl->SetHostInterface(adapter, hostInterface);
data->pFuncs->pfnUtf16Free(hostInterface); data->pFuncs->pfnUtf16Free(hostInterface);
} }
...@@ -3449,7 +3705,11 @@ static virDomainPtr vboxDomainDefineXML(virConnectPtr conn, const char *xml) { ...@@ -3449,7 +3705,11 @@ static virDomainPtr vboxDomainDefineXML(virConnectPtr conn, const char *xml) {
*/ */
rc = machine->vtbl->SaveSettings(machine); rc = machine->vtbl->SaveSettings(machine);
data->vboxSession->vtbl->Close(data->vboxSession); data->vboxSession->vtbl->Close(data->vboxSession);
data->pFuncs->pfnComUnallocMem(mchiid); #if VBOX_API_VERSION == 2002
vboxIIDUnalloc(mchiid);
#else
vboxIIDFree(mchiid);
#endif
dom = virGetDomain(conn, def->name, def->uuid); dom = virGetDomain(conn, def->name, def->uuid);
if(machine) { if(machine) {
...@@ -3458,7 +3718,7 @@ static virDomainPtr vboxDomainDefineXML(virConnectPtr conn, const char *xml) { ...@@ -3458,7 +3718,7 @@ static virDomainPtr vboxDomainDefineXML(virConnectPtr conn, const char *xml) {
} }
} }
VIR_FREE(iid); vboxIIDFree(iid);
virDomainDefFree(def); virDomainDefFree(def);
return dom; return dom;
...@@ -3466,7 +3726,7 @@ static virDomainPtr vboxDomainDefineXML(virConnectPtr conn, const char *xml) { ...@@ -3466,7 +3726,7 @@ static virDomainPtr vboxDomainDefineXML(virConnectPtr conn, const char *xml) {
cleanup: cleanup:
if(machine) if(machine)
machine->vtbl->nsisupports.Release((nsISupports *)machine); machine->vtbl->nsisupports.Release((nsISupports *)machine);
VIR_FREE(iid); vboxIIDFree(iid);
virDomainDefFree(def); virDomainDefFree(def);
return NULL; return NULL;
} }
...@@ -3475,16 +3735,18 @@ static int vboxDomainUndefine(virDomainPtr dom) { ...@@ -3475,16 +3735,18 @@ static int vboxDomainUndefine(virDomainPtr dom) {
nsresult rc; nsresult rc;
vboxGlobalData *data = dom->conn->privateData; vboxGlobalData *data = dom->conn->privateData;
IMachine *machine = NULL; IMachine *machine = NULL;
nsID *iid = NULL; vboxIID *iid = NULL;
int ret = -1; int ret = -1;
#if VBOX_API_VERSION == 2002
if (VIR_ALLOC(iid) < 0) { if (VIR_ALLOC(iid) < 0) {
virReportOOMError(dom->conn); virReportOOMError(dom->conn);
goto cleanup; goto cleanup;
} }
#endif
if(data->vboxObj) { if(data->vboxObj) {
nsIDFromChar(iid, dom->uuid); vboxIIDFromUUID(dom->uuid, iid);
/* Block for checking if HDD's are attched to VM. /* Block for checking if HDD's are attched to VM.
* considering just IDE bus for now. Also skipped * considering just IDE bus for now. Also skipped
...@@ -3517,12 +3779,11 @@ static int vboxDomainUndefine(virDomainPtr dom) { ...@@ -3517,12 +3779,11 @@ static int vboxDomainUndefine(virDomainPtr dom) {
} }
rc = data->vboxObj->vtbl->UnregisterMachine(data->vboxObj, iid, &machine); rc = data->vboxObj->vtbl->UnregisterMachine(data->vboxObj, iid, &machine);
DEBUG("UUID of machine being undefined:{%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}", #if VBOX_API_VERSION == 2002
(unsigned)iid->m0, (unsigned)iid->m1, (unsigned)iid->m2, DEBUGUUID("UUID of machine being undefined", iid);
(unsigned)iid->m3[0], (unsigned)iid->m3[1], #else
(unsigned)iid->m3[2], (unsigned)iid->m3[3], DEBUGPRUnichar("UUID of machine being undefined", iid);
(unsigned)iid->m3[4], (unsigned)iid->m3[5], #endif
(unsigned)iid->m3[6], (unsigned)iid->m3[7]);
if (NS_SUCCEEDED(rc) && machine){ if (NS_SUCCEEDED(rc) && machine){
machine->vtbl->DeleteSettings(machine); machine->vtbl->DeleteSettings(machine);
...@@ -3530,11 +3791,13 @@ static int vboxDomainUndefine(virDomainPtr dom) { ...@@ -3530,11 +3791,13 @@ static int vboxDomainUndefine(virDomainPtr dom) {
} }
} }
#if VBOX_API_VERSION == 2002
cleanup: cleanup:
#endif
vboxIIDFree(iid);
if (machine) if (machine)
machine->vtbl->nsisupports.Release((nsISupports *)machine); machine->vtbl->nsisupports.Release((nsISupports *)machine);
VIR_FREE(iid);
return ret; return ret;
} }
...@@ -3542,7 +3805,7 @@ static int vboxDomainAttachDevice(virDomainPtr dom, const char *xml) { ...@@ -3542,7 +3805,7 @@ static int vboxDomainAttachDevice(virDomainPtr dom, const char *xml) {
nsresult rc; nsresult rc;
vboxGlobalData *data = dom->conn->privateData; vboxGlobalData *data = dom->conn->privateData;
IMachine *machine = NULL; IMachine *machine = NULL;
nsID *iid = NULL; vboxIID *iid = NULL;
PRUint32 state = MachineState_Null; PRUint32 state = MachineState_Null;
virDomainDefPtr def = NULL; virDomainDefPtr def = NULL;
virDomainDeviceDefPtr dev = NULL; virDomainDeviceDefPtr dev = NULL;
...@@ -3562,32 +3825,19 @@ static int vboxDomainAttachDevice(virDomainPtr dom, const char *xml) { ...@@ -3562,32 +3825,19 @@ static int vboxDomainAttachDevice(virDomainPtr dom, const char *xml) {
goto cleanup; goto cleanup;
} }
#if VBOX_API_VERSION == 2002
if (VIR_ALLOC(iid) < 0) { if (VIR_ALLOC(iid) < 0) {
virReportOOMError(dom->conn); virReportOOMError(dom->conn);
goto cleanup; goto cleanup;
} }
#endif
nsIDFromChar(iid, dom->uuid); vboxIIDFromUUID(dom->uuid, iid);
DEBUG("machine uuid:{%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}",
(unsigned)iid->m0, (unsigned)iid->m1,
(unsigned)iid->m2, (unsigned)iid->m3[0],
(unsigned)iid->m3[1], (unsigned)iid->m3[2],
(unsigned)iid->m3[3], (unsigned)iid->m3[4],
(unsigned)iid->m3[5], (unsigned)iid->m3[6],
(unsigned)iid->m3[7]);
if(data->vboxObj) { if(data->vboxObj) {
rc = data->vboxObj->vtbl->GetMachine(data->vboxObj, iid, &machine); rc = data->vboxObj->vtbl->GetMachine(data->vboxObj, iid, &machine);
if (NS_FAILED(rc)) { if (NS_FAILED(rc)) {
vboxError(dom->conn, VIR_ERR_INVALID_DOMAIN, vboxError(dom->conn, VIR_ERR_INVALID_DOMAIN,"no domain with matching uuid");
"no domain with matching uuid:"
"{%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}",
(unsigned)iid->m0, (unsigned)iid->m1,
(unsigned)iid->m2, (unsigned)iid->m3[0],
(unsigned)iid->m3[1], (unsigned)iid->m3[2],
(unsigned)iid->m3[3], (unsigned)iid->m3[4],
(unsigned)iid->m3[5], (unsigned)iid->m3[6],
(unsigned)iid->m3[7]);
goto cleanup; goto cleanup;
} }
...@@ -3613,18 +3863,26 @@ static int vboxDomainAttachDevice(virDomainPtr dom, const char *xml) { ...@@ -3613,18 +3863,26 @@ static int vboxDomainAttachDevice(virDomainPtr dom, const char *xml) {
*/ */
machine->vtbl->GetDVDDrive(machine, &dvdDrive); machine->vtbl->GetDVDDrive(machine, &dvdDrive);
if (dvdDrive) { if (dvdDrive) {
IDVDImage *dvdImage = NULL; IDVDImage *dvdImage = NULL;
PRUnichar *dvdfileUtf16 = NULL; PRUnichar *dvdfileUtf16 = NULL;
nsID *dvduuid = NULL; vboxIID *dvduuid = NULL;
#if VBOX_API_VERSION == 2002
nsID dvdemptyuuid; nsID dvdemptyuuid;
memset(&dvdemptyuuid, 0, sizeof(dvdemptyuuid)); memset(&dvdemptyuuid, 0, sizeof(dvdemptyuuid));
#else
PRUnichar *dvdemptyuuidUtf16 = NULL;
#endif
data->pFuncs->pfnUtf8ToUtf16(dev->data.disk->src, &dvdfileUtf16); data->pFuncs->pfnUtf8ToUtf16(dev->data.disk->src, &dvdfileUtf16);
data->vboxObj->vtbl->FindDVDImage(data->vboxObj, dvdfileUtf16, &dvdImage); data->vboxObj->vtbl->FindDVDImage(data->vboxObj, dvdfileUtf16, &dvdImage);
if (!dvdImage) { if (!dvdImage) {
#if VBOX_API_VERSION == 2002
data->vboxObj->vtbl->OpenDVDImage(data->vboxObj, dvdfileUtf16, &dvdemptyuuid, &dvdImage); data->vboxObj->vtbl->OpenDVDImage(data->vboxObj, dvdfileUtf16, &dvdemptyuuid, &dvdImage);
#else
data->vboxObj->vtbl->OpenDVDImage(data->vboxObj, dvdfileUtf16, dvdemptyuuidUtf16, &dvdImage);
#endif
} }
if (dvdImage) { if (dvdImage) {
rc = dvdImage->vtbl->imedium.GetId((IMedium *)dvdImage, &dvduuid); rc = dvdImage->vtbl->imedium.GetId((IMedium *)dvdImage, &dvduuid);
...@@ -3642,20 +3900,21 @@ static int vboxDomainAttachDevice(virDomainPtr dom, const char *xml) { ...@@ -3642,20 +3900,21 @@ static int vboxDomainAttachDevice(virDomainPtr dom, const char *xml) {
dev->data.disk->src, (unsigned)rc); dev->data.disk->src, (unsigned)rc);
} else { } else {
ret = 0; ret = 0;
DEBUG("CD/DVD Image UUID:" #if VBOX_API_VERSION == 2002
"{%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}", DEBUGUUID("CD/DVD Image UUID:", dvduuid);
(unsigned)dvduuid->m0, (unsigned)dvduuid->m1, #else
(unsigned)dvduuid->m2, (unsigned)dvduuid->m3[0], DEBUGPRUnichar("CD/DVD Image UUID:", dvduuid);
(unsigned)dvduuid->m3[1], (unsigned)dvduuid->m3[2], #endif
(unsigned)dvduuid->m3[3], (unsigned)dvduuid->m3[4],
(unsigned)dvduuid->m3[5], (unsigned)dvduuid->m3[6],
(unsigned)dvduuid->m3[7]);
} }
data->pFuncs->pfnComUnallocMem(dvduuid);
} }
dvdImage->vtbl->imedium.nsisupports.Release((nsISupports *)dvdImage); dvdImage->vtbl->imedium.nsisupports.Release((nsISupports *)dvdImage);
} }
#if VBOX_API_VERSION == 2002
vboxIIDUnalloc(dvduuid);
#else
vboxIIDFree(dvduuid);
#endif
data->pFuncs->pfnUtf16Free(dvdfileUtf16); data->pFuncs->pfnUtf16Free(dvdfileUtf16);
dvdDrive->vtbl->nsisupports.Release((nsISupports *)dvdDrive); dvdDrive->vtbl->nsisupports.Release((nsISupports *)dvdDrive);
} }
...@@ -3668,20 +3927,30 @@ static int vboxDomainAttachDevice(virDomainPtr dom, const char *xml) { ...@@ -3668,20 +3927,30 @@ static int vboxDomainAttachDevice(virDomainPtr dom, const char *xml) {
if (floppyDrive) { if (floppyDrive) {
rc = floppyDrive->vtbl->SetEnabled(floppyDrive, 1); rc = floppyDrive->vtbl->SetEnabled(floppyDrive, 1);
if (NS_SUCCEEDED(rc)) { if (NS_SUCCEEDED(rc)) {
IFloppyImage *floppyImage = NULL; IFloppyImage *floppyImage = NULL;
PRUnichar *fdfileUtf16 = NULL; PRUnichar *fdfileUtf16 = NULL;
nsID *fduuid = NULL; vboxIID *fduuid = NULL;
#if VBOX_API_VERSION == 2002
nsID fdemptyuuid; nsID fdemptyuuid;
memset(&fdemptyuuid, 0, sizeof(fdemptyuuid)); memset(&fdemptyuuid, 0, sizeof(fdemptyuuid));
#else
PRUnichar *fdemptyuuidUtf16 = NULL;
#endif
data->pFuncs->pfnUtf8ToUtf16(dev->data.disk->src, &fdfileUtf16); data->pFuncs->pfnUtf8ToUtf16(dev->data.disk->src, &fdfileUtf16);
rc = data->vboxObj->vtbl->FindFloppyImage(data->vboxObj, fdfileUtf16, rc = data->vboxObj->vtbl->FindFloppyImage(data->vboxObj,
fdfileUtf16,
&floppyImage); &floppyImage);
if (!floppyImage) { if (!floppyImage) {
data->vboxObj->vtbl->OpenFloppyImage(data->vboxObj, fdfileUtf16, data->vboxObj->vtbl->OpenFloppyImage(data->vboxObj,
&fdemptyuuid, &floppyImage); fdfileUtf16,
#if VBOX_API_VERSION == 2002
&fdemptyuuid,
#else
fdemptyuuidUtf16,
#endif
&floppyImage);
} }
if (floppyImage) { if (floppyImage) {
...@@ -3698,19 +3967,20 @@ static int vboxDomainAttachDevice(virDomainPtr dom, const char *xml) { ...@@ -3698,19 +3967,20 @@ static int vboxDomainAttachDevice(virDomainPtr dom, const char *xml) {
dev->data.disk->src, (unsigned)rc); dev->data.disk->src, (unsigned)rc);
} else { } else {
ret = 0; ret = 0;
DEBUG("attached floppy, UUID:" #if VBOX_API_VERSION == 2002
"{%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}", DEBUGUUID("attached floppy, UUID:", fduuid);
(unsigned)fduuid->m0, (unsigned)fduuid->m1, #else
(unsigned)fduuid->m2, DEBUGPRUnichar("attached floppy, UUID:", fduuid);
(unsigned)fduuid->m3[0], (unsigned)fduuid->m3[1], #endif
(unsigned)fduuid->m3[2], (unsigned)fduuid->m3[3],
(unsigned)fduuid->m3[4], (unsigned)fduuid->m3[5],
(unsigned)fduuid->m3[6], (unsigned)fduuid->m3[7]);
} }
data->pFuncs->pfnComUnallocMem(fduuid);
} }
floppyImage->vtbl->imedium.nsisupports.Release((nsISupports *)floppyImage); floppyImage->vtbl->imedium.nsisupports.Release((nsISupports *)floppyImage);
} }
#if VBOX_API_VERSION == 2002
vboxIIDUnalloc(fduuid);
#else
vboxIIDFree(fduuid);
#endif
data->pFuncs->pfnUtf16Free(fdfileUtf16); data->pFuncs->pfnUtf16Free(fdfileUtf16);
} }
floppyDrive->vtbl->nsisupports.Release((nsISupports *)floppyDrive); floppyDrive->vtbl->nsisupports.Release((nsISupports *)floppyDrive);
...@@ -3734,7 +4004,7 @@ static int vboxDomainAttachDevice(virDomainPtr dom, const char *xml) { ...@@ -3734,7 +4004,7 @@ static int vboxDomainAttachDevice(virDomainPtr dom, const char *xml) {
} }
cleanup: cleanup:
VIR_FREE(iid); vboxIIDFree(iid);
virDomainDefFree(def); virDomainDefFree(def);
virDomainDeviceDefFree(dev); virDomainDeviceDefFree(dev);
return ret; return ret;
...@@ -3744,7 +4014,7 @@ static int vboxDomainDetachDevice(virDomainPtr dom, const char *xml) { ...@@ -3744,7 +4014,7 @@ static int vboxDomainDetachDevice(virDomainPtr dom, const char *xml) {
nsresult rc; nsresult rc;
vboxGlobalData *data = dom->conn->privateData; vboxGlobalData *data = dom->conn->privateData;
IMachine *machine = NULL; IMachine *machine = NULL;
nsID *iid = NULL; vboxIID *iid = NULL;
PRUint32 state = MachineState_Null; PRUint32 state = MachineState_Null;
virDomainDefPtr def = NULL; virDomainDefPtr def = NULL;
virDomainDeviceDefPtr dev = NULL; virDomainDeviceDefPtr dev = NULL;
...@@ -3764,32 +4034,19 @@ static int vboxDomainDetachDevice(virDomainPtr dom, const char *xml) { ...@@ -3764,32 +4034,19 @@ static int vboxDomainDetachDevice(virDomainPtr dom, const char *xml) {
goto cleanup; goto cleanup;
} }
#if VBOX_API_VERSION == 2002
if (VIR_ALLOC(iid) < 0) { if (VIR_ALLOC(iid) < 0) {
virReportOOMError(dom->conn); virReportOOMError(dom->conn);
goto cleanup; goto cleanup;
} }
#endif
nsIDFromChar(iid, dom->uuid); vboxIIDFromUUID(dom->uuid, iid);
DEBUG("machine uuid:{%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}",
(unsigned)iid->m0, (unsigned)iid->m1,
(unsigned)iid->m2, (unsigned)iid->m3[0],
(unsigned)iid->m3[1], (unsigned)iid->m3[2],
(unsigned)iid->m3[3], (unsigned)iid->m3[4],
(unsigned)iid->m3[5], (unsigned)iid->m3[6],
(unsigned)iid->m3[7]);
if(data->vboxObj) { if(data->vboxObj) {
rc = data->vboxObj->vtbl->GetMachine(data->vboxObj, iid, &machine); rc = data->vboxObj->vtbl->GetMachine(data->vboxObj, iid, &machine);
if (NS_FAILED(rc)) { if (NS_FAILED(rc)) {
vboxError(dom->conn, VIR_ERR_INVALID_DOMAIN, vboxError(dom->conn, VIR_ERR_INVALID_DOMAIN, "no domain with matching uuid");
"no domain with matching uuid:"
"{%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}",
(unsigned)iid->m0, (unsigned)iid->m1,
(unsigned)iid->m2, (unsigned)iid->m3[0],
(unsigned)iid->m3[1], (unsigned)iid->m3[2],
(unsigned)iid->m3[3], (unsigned)iid->m3[4],
(unsigned)iid->m3[5], (unsigned)iid->m3[6],
(unsigned)iid->m3[7]);
goto cleanup; goto cleanup;
} }
...@@ -3802,6 +4059,7 @@ static int vboxDomainDetachDevice(virDomainPtr dom, const char *xml) { ...@@ -3802,6 +4059,7 @@ static int vboxDomainDetachDevice(virDomainPtr dom, const char *xml) {
} else { } else {
rc = data->vboxObj->vtbl->OpenSession(data->vboxObj, data->vboxSession, iid); rc = data->vboxObj->vtbl->OpenSession(data->vboxObj, data->vboxSession, iid);
} }
if (NS_SUCCEEDED(rc)) { if (NS_SUCCEEDED(rc)) {
rc = data->vboxSession->vtbl->GetMachine(data->vboxSession, &machine); rc = data->vboxSession->vtbl->GetMachine(data->vboxSession, &machine);
if (NS_SUCCEEDED(rc) && machine) { if (NS_SUCCEEDED(rc) && machine) {
...@@ -3871,12 +4129,459 @@ static int vboxDomainDetachDevice(virDomainPtr dom, const char *xml) { ...@@ -3871,12 +4129,459 @@ static int vboxDomainDetachDevice(virDomainPtr dom, const char *xml) {
} }
cleanup: cleanup:
VIR_FREE(iid); vboxIIDFree(iid);
virDomainDefFree(def); virDomainDefFree(def);
virDomainDeviceDefFree(dev); virDomainDeviceDefFree(dev);
return ret; return ret;
} }
#if VBOX_API_VERSION == 2002
/* No Callback support for VirtualBox 2.2.* series */
#else /* !(VBOX_API_VERSION == 2002) */
/* Functions needed for Callbacks */
static nsresult vboxCallbackOnMachineStateChange (IVirtualBoxCallback *pThis,
PRUnichar * machineId,
PRUint32 state) {
virDomainPtr dom = NULL;
int event = 0;
int detail = 0;
g_pVBoxGlobalData->domainEventDispatching = 1;
vboxDriverLock(g_pVBoxGlobalData);
DEBUG("IVirtualBoxCallback: %p, State: %d", pThis, state);
DEBUGPRUnichar("machineId", machineId);
if (machineId) {
char *machineIdUtf8 = NULL;
unsigned char uuid[VIR_UUID_BUFLEN];
g_pVBoxGlobalData->pFuncs->pfnUtf16ToUtf8(machineId, &machineIdUtf8);
virUUIDParse(machineIdUtf8, uuid);
dom = vboxDomainLookupByUUID(g_pVBoxGlobalData->conn, uuid);
if (dom) {
int i = 0;
if (state == MachineState_Starting) {
event = VIR_DOMAIN_EVENT_STARTED;
detail = VIR_DOMAIN_EVENT_STARTED_BOOTED;
} else if (state == MachineState_Restoring) {
event = VIR_DOMAIN_EVENT_STARTED;
detail = VIR_DOMAIN_EVENT_STARTED_RESTORED;
} else if (state == MachineState_Paused) {
event = VIR_DOMAIN_EVENT_SUSPENDED;
detail = VIR_DOMAIN_EVENT_SUSPENDED_PAUSED;
} else if (state == MachineState_Running) {
event = VIR_DOMAIN_EVENT_RESUMED;
detail = VIR_DOMAIN_EVENT_RESUMED_UNPAUSED;
} else if (state == MachineState_PoweredOff) {
event = VIR_DOMAIN_EVENT_STOPPED;
detail = VIR_DOMAIN_EVENT_STOPPED_SHUTDOWN;
} else if (state == MachineState_Stopping) {
event = VIR_DOMAIN_EVENT_STOPPED;
detail = VIR_DOMAIN_EVENT_STOPPED_DESTROYED;
} else if (state == MachineState_Aborted) {
event = VIR_DOMAIN_EVENT_STOPPED;
detail = VIR_DOMAIN_EVENT_STOPPED_CRASHED;
} else if (state == MachineState_Saving) {
event = VIR_DOMAIN_EVENT_STOPPED;
detail = VIR_DOMAIN_EVENT_STOPPED_SAVED;
} else {
event = VIR_DOMAIN_EVENT_STOPPED;
detail = VIR_DOMAIN_EVENT_STOPPED_SHUTDOWN;
}
for (i = 0; i < g_pVBoxGlobalData->domainEventCallbacks->count; i++) {
if (g_pVBoxGlobalData->domainEventCallbacks->callbacks[i]->cb) {
g_pVBoxGlobalData->domainEventCallbacks->callbacks[i]->cb(g_pVBoxGlobalData->conn,
dom,
event,
detail,
NULL);
}
}
}
}
virDomainEventCallbackListPurgeMarked(g_pVBoxGlobalData->domainEventCallbacks);
vboxDriverUnlock(g_pVBoxGlobalData);
g_pVBoxGlobalData->domainEventDispatching = 0;
return NS_OK;
}
static nsresult vboxCallbackOnMachineDataChange (IVirtualBoxCallback *pThis,
PRUnichar * machineId) {
DEBUG("IVirtualBoxCallback: %p", pThis);
DEBUGPRUnichar("machineId", machineId);
return NS_OK;
}
static nsresult vboxCallbackOnExtraDataCanChange (IVirtualBoxCallback *pThis,
PRUnichar * machineId,
PRUnichar * key,
PRUnichar * value,
PRUnichar * * error ATTRIBUTE_UNUSED,
PRBool * allowChange) {
DEBUG("IVirtualBoxCallback: %p, allowChange: %s", pThis, *allowChange ? "true" : "false");
DEBUGPRUnichar("machineId", machineId);
DEBUGPRUnichar("key", key);
DEBUGPRUnichar("value", value);
return NS_OK;
}
static nsresult vboxCallbackOnExtraDataChange (IVirtualBoxCallback *pThis,
PRUnichar * machineId,
PRUnichar * key,
PRUnichar * value) {
DEBUG("IVirtualBoxCallback: %p", pThis);
DEBUGPRUnichar("machineId", machineId);
DEBUGPRUnichar("key", key);
DEBUGPRUnichar("value", value);
return NS_OK;
}
static nsresult vboxCallbackOnMediaRegistered (IVirtualBoxCallback *pThis,
PRUnichar * mediaId,
PRUint32 mediaType,
PRBool registered) {
DEBUG("IVirtualBoxCallback: %p, registered: %s", pThis, registered ? "true" : "false");
DEBUG("mediaType: %d", mediaType);
DEBUGPRUnichar("mediaId", mediaId);
return NS_OK;
}
static nsresult vboxCallbackOnMachineRegistered (IVirtualBoxCallback *pThis,
PRUnichar * machineId,
PRBool registered) {
virDomainPtr dom = NULL;
int event = 0;
int detail = 0;
g_pVBoxGlobalData->domainEventDispatching = 1;
vboxDriverLock(g_pVBoxGlobalData);
DEBUG("IVirtualBoxCallback: %p, registered: %s", pThis, registered ? "true" : "false");
DEBUGPRUnichar("machineId", machineId);
if (machineId) {
char *machineIdUtf8 = NULL;
unsigned char uuid[VIR_UUID_BUFLEN];
g_pVBoxGlobalData->pFuncs->pfnUtf16ToUtf8(machineId, &machineIdUtf8);
virUUIDParse(machineIdUtf8, uuid);
dom = vboxDomainLookupByUUID(g_pVBoxGlobalData->conn, uuid);
if (dom) {
int i = 0;
/* CURRENT LIMITATION: we never get the VIR_DOMAIN_EVENT_UNDEFINED
* event becuase the when the machine is de-registered the call
* to vboxDomainLookupByUUID fails and thus we don't get any
* dom pointer which is necessary (null dom pointer doesn't work)
* to show the VIR_DOMAIN_EVENT_UNDEFINED event
*/
if (registered) {
event = VIR_DOMAIN_EVENT_DEFINED;
detail = VIR_DOMAIN_EVENT_DEFINED_ADDED;
} else {
event = VIR_DOMAIN_EVENT_UNDEFINED;
detail = VIR_DOMAIN_EVENT_UNDEFINED_REMOVED;
}
for (i = 0; i < g_pVBoxGlobalData->domainEventCallbacks->count; i++) {
if (g_pVBoxGlobalData->domainEventCallbacks->callbacks[i]->cb) {
g_pVBoxGlobalData->domainEventCallbacks->callbacks[i]->cb(g_pVBoxGlobalData->conn,
dom,
event,
detail,
NULL);
}
}
}
}
virDomainEventCallbackListPurgeMarked(g_pVBoxGlobalData->domainEventCallbacks);
vboxDriverUnlock(g_pVBoxGlobalData);
g_pVBoxGlobalData->domainEventDispatching = 0;
return NS_OK;
}
static nsresult vboxCallbackOnSessionStateChange (IVirtualBoxCallback *pThis,
PRUnichar * machineId,
PRUint32 state) {
DEBUG("IVirtualBoxCallback: %p, state: %d", pThis, state);
DEBUGPRUnichar("machineId", machineId);
return NS_OK;
}
static nsresult vboxCallbackOnSnapshotTaken (IVirtualBoxCallback *pThis,
PRUnichar * machineId,
PRUnichar * snapshotId) {
DEBUG("IVirtualBoxCallback: %p", pThis);
DEBUGPRUnichar("machineId", machineId);
DEBUGPRUnichar("snapshotId", snapshotId);
return NS_OK;
}
static nsresult vboxCallbackOnSnapshotDiscarded (IVirtualBoxCallback *pThis,
PRUnichar * machineId,
PRUnichar * snapshotId) {
DEBUG("IVirtualBoxCallback: %p", pThis);
DEBUGPRUnichar("machineId", machineId);
DEBUGPRUnichar("snapshotId", snapshotId);
return NS_OK;
}
static nsresult vboxCallbackOnSnapshotChange (IVirtualBoxCallback *pThis,
PRUnichar * machineId,
PRUnichar * snapshotId) {
DEBUG("IVirtualBoxCallback: %p", pThis);
DEBUGPRUnichar("machineId", machineId);
DEBUGPRUnichar("snapshotId", snapshotId);
return NS_OK;
}
static nsresult vboxCallbackOnGuestPropertyChange (IVirtualBoxCallback *pThis,
PRUnichar * machineId,
PRUnichar * name,
PRUnichar * value,
PRUnichar * flags) {
DEBUG("IVirtualBoxCallback: %p", pThis);
DEBUGPRUnichar("machineId", machineId);
DEBUGPRUnichar("name", name);
DEBUGPRUnichar("value", value);
DEBUGPRUnichar("flags", flags);
return NS_OK;
}
static nsresult vboxCallbackAddRef(nsISupports *pThis) {
nsresult c;
c = ++g_pVBoxGlobalData->vboxCallBackRefCount;
DEBUG("pThis: %p, vboxCallback AddRef: %d", pThis, c);
return c;
}
static nsresult vboxCallbackRelease(nsISupports *pThis) {
nsresult c;
c = --g_pVBoxGlobalData->vboxCallBackRefCount;
if (c == 0) {
/* delete object */
VIR_FREE(pThis->vtbl);
VIR_FREE(pThis);
}
DEBUG("pThis: %p, vboxCallback Release: %d", pThis, c);
return c;
}
static nsresult vboxCallbackQueryInterface(nsISupports *pThis, const nsID *iid, void **resultp) {
IVirtualBoxCallback *that = (IVirtualBoxCallback *)pThis;
static const nsID ivirtualboxCallbackUUID = IVIRTUALBOXCALLBACK_IID;
static const nsID isupportIID = NS_ISUPPORTS_IID;
/* Match UUID for IVirtualBoxCallback class */
if ( memcmp(iid, &ivirtualboxCallbackUUID, sizeof(nsID)) == 0
|| memcmp(iid, &isupportIID, sizeof(nsID)) == 0) {
g_pVBoxGlobalData->vboxCallBackRefCount++;
*resultp = that;
DEBUG("pThis: %p, vboxCallback QueryInterface: %d", pThis, g_pVBoxGlobalData->vboxCallBackRefCount);
return NS_OK;
}
DEBUG("pThis: %p, vboxCallback QueryInterface didn't find a matching interface", pThis);
DEBUGUUID("The UUID Callback Interface expects", iid);
DEBUGUUID("The UUID Callback Interface got", &ivirtualboxCallbackUUID);
return NS_NOINTERFACE;
}
static IVirtualBoxCallback *vboxAllocCallbackObj (virConnectPtr conn) {
IVirtualBoxCallback *vboxCallback = NULL;
/* Allocate, Initialize and return a validi
* IVirtualBoxCallback object here
*/
if ((VIR_ALLOC(vboxCallback) < 0) || (VIR_ALLOC(vboxCallback->vtbl) < 0)) {
virReportOOMError(conn);
return NULL;
}
{
vboxCallback->vtbl->nsisupports.AddRef = &vboxCallbackAddRef;
vboxCallback->vtbl->nsisupports.Release = &vboxCallbackRelease;
vboxCallback->vtbl->nsisupports.QueryInterface = &vboxCallbackQueryInterface;
vboxCallback->vtbl->OnMachineStateChange = &vboxCallbackOnMachineStateChange;
vboxCallback->vtbl->OnMachineDataChange = &vboxCallbackOnMachineDataChange;
vboxCallback->vtbl->OnExtraDataCanChange = &vboxCallbackOnExtraDataCanChange;
vboxCallback->vtbl->OnExtraDataChange = &vboxCallbackOnExtraDataChange;
vboxCallback->vtbl->OnMediaRegistered = &vboxCallbackOnMediaRegistered;
vboxCallback->vtbl->OnMachineRegistered = &vboxCallbackOnMachineRegistered;
vboxCallback->vtbl->OnSessionStateChange = &vboxCallbackOnSessionStateChange;
vboxCallback->vtbl->OnSnapshotTaken = &vboxCallbackOnSnapshotTaken;
vboxCallback->vtbl->OnSnapshotDiscarded = &vboxCallbackOnSnapshotDiscarded;
vboxCallback->vtbl->OnSnapshotChange = &vboxCallbackOnSnapshotChange;
vboxCallback->vtbl->OnGuestPropertyChange = &vboxCallbackOnGuestPropertyChange;
g_pVBoxGlobalData->vboxCallBackRefCount = 1;
}
return vboxCallback;
}
static void vboxReadCallback(int watch ATTRIBUTE_UNUSED,
int fd,
int events ATTRIBUTE_UNUSED,
void *opaque ATTRIBUTE_UNUSED) {
if (fd >= 0) {
g_pVBoxGlobalData->vboxQueue->vtbl->ProcessPendingEvents(g_pVBoxGlobalData->vboxQueue);
} else {
nsresult rc;
PLEvent *pEvent = NULL;
rc = g_pVBoxGlobalData->vboxQueue->vtbl->WaitForEvent(g_pVBoxGlobalData->vboxQueue, &pEvent);
if (NS_SUCCEEDED(rc))
g_pVBoxGlobalData->vboxQueue->vtbl->HandleEvent(g_pVBoxGlobalData->vboxQueue, pEvent);
}
}
static int vboxDomainEventRegister (virConnectPtr conn,
virConnectDomainEventCallback callback,
void *opaque,
virFreeCallback freecb) {
nsresult rc;
vboxGlobalData *data = conn->privateData;
int vboxRet = -1;
int ret = -1;
/* Locking has to be there as callbacks are not
* really fully thread safe
*/
vboxDriverLock(data);
if(data->vboxObj) {
if (data->vboxCallback == NULL) {
data->vboxCallback = vboxAllocCallbackObj(conn);
if (data->vboxCallback != NULL) {
rc = data->vboxObj->vtbl->RegisterCallback(data->vboxObj, data->vboxCallback);
if (NS_SUCCEEDED(rc)) {
vboxRet = 0;
}
}
} else {
vboxRet = 0;
}
/* Get the vbox file handle and add a event handle to it
* so that the events can be passed down to the user
*/
if (vboxRet == 0) {
if (data->fdWatch < 0) {
PRInt32 vboxFileHandle;
vboxFileHandle = data->vboxQueue->vtbl->GetEventQueueSelectFD(data->vboxQueue);
data->fdWatch = virEventAddHandle(vboxFileHandle, VIR_EVENT_HANDLE_READABLE, vboxReadCallback, NULL, NULL);
}
if (data->fdWatch >= 0) {
/* Once a callback is registered with virtualbox, use a list
* to store the callbacks registered with libvirt so that
* later you can iterate over them
*/
ret = virDomainEventCallbackListAdd(conn, data->domainEventCallbacks,
callback, opaque, freecb);
DEBUG("virDomainEventCallbackListAdd (ret = %d) ( conn: %p, "
"data->domainEventCallbacks: %p, callback: %p, opaque: %p, "
"freecb: %p )", ret, conn, data->domainEventCallbacks, callback,
opaque, freecb);
}
}
}
vboxDriverUnlock(data);
if (ret >= 0) {
return ret;
} else {
if (data->vboxObj && data->vboxCallback) {
data->vboxObj->vtbl->UnregisterCallback(data->vboxObj, data->vboxCallback);
}
return -1;
}
}
static int vboxDomainEventDeregister (virConnectPtr conn,
virConnectDomainEventCallback callback) {
vboxGlobalData *data = conn->privateData;
int ret = -1;
/* Locking has to be there as callbacks are not
* really fully thread safe
*/
vboxDriverLock(data);
if (data->domainEventDispatching)
ret = virDomainEventCallbackListMarkDelete(conn, data->domainEventCallbacks,
callback);
else
ret = virDomainEventCallbackListRemove(conn, data->domainEventCallbacks,
callback);
if(data->vboxObj && data->vboxCallback) {
/* check count here of how many times register was called
* and only on the last de-register do the un-register call
*/
if (data->domainEventCallbacks && (data->domainEventCallbacks->count <= 0)) {
int i = 0;
data->vboxObj->vtbl->UnregisterCallback(data->vboxObj, data->vboxCallback);
data->vboxCallback->vtbl->nsisupports.Release((nsISupports *)data->vboxCallback);
/* Remove the Event file handle on which we are listening as well */
virEventRemoveHandle(data->fdWatch);
data->fdWatch = -1;
/* iterate and free all the opaque objects using the
* freecb callback provided in vboxDomainEventRegister()
*/
for (i = 0; i < data->domainEventCallbacks->count; i++) {
if (data->domainEventCallbacks->callbacks[i]->freecb) {
data->domainEventCallbacks->callbacks[i]->freecb(data->domainEventCallbacks->callbacks[i]->opaque);
}
}
}
}
vboxDriverUnlock(data);
return ret;
}
#endif /* !(VBOX_API_VERSION == 2002) */
/** /**
* The Network Functions here on * The Network Functions here on
*/ */
...@@ -4116,13 +4821,20 @@ static int vboxListDefinedNetworks(virConnectPtr conn, char **const names, int n ...@@ -4116,13 +4821,20 @@ static int vboxListDefinedNetworks(virConnectPtr conn, char **const names, int n
static virNetworkPtr vboxNetworkLookupByUUID(virConnectPtr conn, const unsigned char *uuid) { static virNetworkPtr vboxNetworkLookupByUUID(virConnectPtr conn, const unsigned char *uuid) {
vboxGlobalData *data = conn->privateData; vboxGlobalData *data = conn->privateData;
virNetworkPtr ret = NULL; virNetworkPtr ret = NULL;
nsID *iid = NULL; vboxIID *iid = NULL;
#if VBOX_API_VERSION == 2002
if (VIR_ALLOC(iid) < 0) { if (VIR_ALLOC(iid) < 0) {
virReportOOMError(conn); virReportOOMError(conn);
goto cleanup; goto cleanup;
} }
#endif
vboxIIDFromUUID(uuid, iid);
/* TODO: "internal" networks are just strings and
* thus can't do much with them
*/
if (data->vboxObj) { if (data->vboxObj) {
IHost *host = NULL; IHost *host = NULL;
...@@ -4130,7 +4842,6 @@ static virNetworkPtr vboxNetworkLookupByUUID(virConnectPtr conn, const unsigned ...@@ -4130,7 +4842,6 @@ static virNetworkPtr vboxNetworkLookupByUUID(virConnectPtr conn, const unsigned
if (host) { if (host) {
IHostNetworkInterface *networkInterface = NULL; IHostNetworkInterface *networkInterface = NULL;
nsIDFromChar(iid, uuid);
host->vtbl->FindHostNetworkInterfaceById(host, iid, &networkInterface); host->vtbl->FindHostNetworkInterfaceById(host, iid, &networkInterface);
if (networkInterface) { if (networkInterface) {
PRUint32 interfaceType = 0; PRUint32 interfaceType = 0;
...@@ -4147,14 +4858,11 @@ static virNetworkPtr vboxNetworkLookupByUUID(virConnectPtr conn, const unsigned ...@@ -4147,14 +4858,11 @@ static virNetworkPtr vboxNetworkLookupByUUID(virConnectPtr conn, const unsigned
ret = virGetNetwork(conn, nameUtf8, uuid); ret = virGetNetwork(conn, nameUtf8, uuid);
DEBUG("Network Name: %s", nameUtf8); DEBUG("Network Name: %s", nameUtf8);
DEBUG("Network UUID: " #if VBOX_API_VERSION == 2002
"{%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}", DEBUGUUID("Network UUID", iid);
(unsigned)iid->m0, (unsigned)iid->m1, #else
(unsigned)iid->m2, (unsigned)iid->m3[0], DEBUGPRUnichar("Network UUID", iid);
(unsigned)iid->m3[1], (unsigned)iid->m3[2], #endif
(unsigned)iid->m3[3], (unsigned)iid->m3[4],
(unsigned)iid->m3[5], (unsigned)iid->m3[6],
(unsigned)iid->m3[7]);
data->pFuncs->pfnUtf8Free(nameUtf8); data->pFuncs->pfnUtf8Free(nameUtf8);
data->pFuncs->pfnUtf16Free(nameUtf16); data->pFuncs->pfnUtf16Free(nameUtf16);
...@@ -4167,8 +4875,10 @@ static virNetworkPtr vboxNetworkLookupByUUID(virConnectPtr conn, const unsigned ...@@ -4167,8 +4875,10 @@ static virNetworkPtr vboxNetworkLookupByUUID(virConnectPtr conn, const unsigned
} }
} }
#if VBOX_API_VERSION == 2002
cleanup: cleanup:
VIR_FREE(iid); #endif
vboxIIDFree(iid);
return ret; return ret;
} }
...@@ -4195,25 +4905,20 @@ static virNetworkPtr vboxNetworkLookupByName(virConnectPtr conn, const char *nam ...@@ -4195,25 +4905,20 @@ static virNetworkPtr vboxNetworkLookupByName(virConnectPtr conn, const char *nam
if (interfaceType == HostNetworkInterfaceType_HostOnly) { if (interfaceType == HostNetworkInterfaceType_HostOnly) {
unsigned char uuid[VIR_UUID_BUFLEN]; unsigned char uuid[VIR_UUID_BUFLEN];
nsID *iid = NULL; vboxIID *iid = NULL;
networkInterface->vtbl->GetId(networkInterface, &iid); networkInterface->vtbl->GetId(networkInterface, &iid);
vboxIIDToUUID(uuid, iid);
nsIDtoChar(uuid, iid);
ret = virGetNetwork(conn, name, uuid); ret = virGetNetwork(conn, name, uuid);
DEBUG("Network Name: %s", name); DEBUG("Network Name: %s", name);
DEBUG("Network UUID: "
"{%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}", #if VBOX_API_VERSION == 2002
(unsigned)iid->m0, (unsigned)iid->m1, DEBUGUUID("Network UUID", iid);
(unsigned)iid->m2, (unsigned)iid->m3[0], vboxIIDUnalloc(iid);
(unsigned)iid->m3[1], (unsigned)iid->m3[2], #else
(unsigned)iid->m3[3], (unsigned)iid->m3[4], DEBUGPRUnichar("Network UUID", iid);
(unsigned)iid->m3[5], (unsigned)iid->m3[6], vboxIIDFree(iid);
(unsigned)iid->m3[7]); #endif
data->pFuncs->pfnComUnallocMem(iid);
} }
networkInterface->vtbl->nsisupports.Release((nsISupports *) networkInterface); networkInterface->vtbl->nsisupports.Release((nsISupports *) networkInterface);
...@@ -4231,34 +4936,16 @@ static virNetworkPtr vboxNetworkCreateXML(virConnectPtr conn, const char *xml) { ...@@ -4231,34 +4936,16 @@ static virNetworkPtr vboxNetworkCreateXML(virConnectPtr conn, const char *xml) {
vboxGlobalData *data = conn->privateData; vboxGlobalData *data = conn->privateData;
virNetworkDefPtr def = NULL; virNetworkDefPtr def = NULL;
virNetworkPtr ret = NULL; virNetworkPtr ret = NULL;
nsID *iid = NULL;
char *networkNameUtf8 = NULL; char *networkNameUtf8 = NULL;
if ((def = virNetworkDefParseString(conn, xml)) == NULL) if ((def = virNetworkDefParseString(conn, xml)) == NULL)
goto cleanup; goto cleanup;
if (VIR_ALLOC(iid) < 0) {
virReportOOMError(conn);
goto cleanup;
}
if (virAsprintf(&networkNameUtf8, "HostInterfaceNetworking-%s", def->name) < 0) { if (virAsprintf(&networkNameUtf8, "HostInterfaceNetworking-%s", def->name) < 0) {
virReportOOMError(conn); virReportOOMError(conn);
goto cleanup; goto cleanup;
} }
nsIDFromChar(iid, def->uuid);
DEBUG("Network Name: %s", def->name);
DEBUG("Network UUID: "
"{%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}",
(unsigned)iid->m0, (unsigned)iid->m1,
(unsigned)iid->m2, (unsigned)iid->m3[0],
(unsigned)iid->m3[1], (unsigned)iid->m3[2],
(unsigned)iid->m3[3], (unsigned)iid->m3[4],
(unsigned)iid->m3[5], (unsigned)iid->m3[6],
(unsigned)iid->m3[7]);
if ((data->vboxObj) && (def->forwardType == VIR_NETWORK_FORWARD_NONE)) { if ((data->vboxObj) && (def->forwardType == VIR_NETWORK_FORWARD_NONE)) {
/* VirtualBox version 2.2.* has only one "hostonly" /* VirtualBox version 2.2.* has only one "hostonly"
* network called "vboxnet0" for linux * network called "vboxnet0" for linux
...@@ -4282,14 +4969,13 @@ static virNetworkPtr vboxNetworkCreateXML(virConnectPtr conn, const char *xml) { ...@@ -4282,14 +4969,13 @@ static virNetworkPtr vboxNetworkCreateXML(virConnectPtr conn, const char *xml) {
if (interfaceType == HostNetworkInterfaceType_HostOnly) { if (interfaceType == HostNetworkInterfaceType_HostOnly) {
unsigned char uuid[VIR_UUID_BUFLEN]; unsigned char uuid[VIR_UUID_BUFLEN];
nsID *vboxnet0IID = NULL;
PRUnichar *networkNameUtf16 = NULL; PRUnichar *networkNameUtf16 = NULL;
vboxIID *vboxnet0IID = NULL;
data->pFuncs->pfnUtf8ToUtf16(networkNameUtf8 , &networkNameUtf16);
networkInterface->vtbl->GetId(networkInterface, &vboxnet0IID); networkInterface->vtbl->GetId(networkInterface, &vboxnet0IID);
vboxIIDToUUID(uuid, vboxnet0IID);
data->pFuncs->pfnUtf8ToUtf16(networkNameUtf8 , &networkNameUtf16);
nsIDtoChar(uuid, vboxnet0IID);
/* Currently support only one dhcp server per network /* Currently support only one dhcp server per network
* with contigious address space from start to end * with contigious address space from start to end
...@@ -4347,16 +5033,13 @@ static virNetworkPtr vboxNetworkCreateXML(virConnectPtr conn, const char *xml) { ...@@ -4347,16 +5033,13 @@ static virNetworkPtr vboxNetworkCreateXML(virConnectPtr conn, const char *xml) {
ret = virGetNetwork(conn, def->name, uuid); ret = virGetNetwork(conn, def->name, uuid);
DEBUG("Real Network UUID: " #if VBOX_API_VERSION == 2002
"{%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}", DEBUGUUID("Real Network UUID", vboxnet0IID);
(unsigned)vboxnet0IID->m0, (unsigned)vboxnet0IID->m1, vboxIIDUnalloc(vboxnet0IID);
(unsigned)vboxnet0IID->m2, (unsigned)vboxnet0IID->m3[0], #else
(unsigned)vboxnet0IID->m3[1], (unsigned)vboxnet0IID->m3[2], DEBUGPRUnichar("Real Network UUID", vboxnet0IID);
(unsigned)vboxnet0IID->m3[3], (unsigned)vboxnet0IID->m3[4], vboxIIDFree(vboxnet0IID);
(unsigned)vboxnet0IID->m3[5], (unsigned)vboxnet0IID->m3[6], #endif
(unsigned)vboxnet0IID->m3[7]);
data->pFuncs->pfnComUnallocMem(vboxnet0IID);
data->pFuncs->pfnUtf16Free(networkNameUtf16); data->pFuncs->pfnUtf16Free(networkNameUtf16);
} }
...@@ -4370,7 +5053,6 @@ static virNetworkPtr vboxNetworkCreateXML(virConnectPtr conn, const char *xml) { ...@@ -4370,7 +5053,6 @@ static virNetworkPtr vboxNetworkCreateXML(virConnectPtr conn, const char *xml) {
} }
cleanup: cleanup:
VIR_FREE(iid);
VIR_FREE(networkNameUtf8); VIR_FREE(networkNameUtf8);
virNetworkDefFree(def); virNetworkDefFree(def);
return ret; return ret;
...@@ -4380,7 +5062,6 @@ static virNetworkPtr vboxNetworkDefineXML(virConnectPtr conn, const char *xml) { ...@@ -4380,7 +5062,6 @@ static virNetworkPtr vboxNetworkDefineXML(virConnectPtr conn, const char *xml) {
vboxGlobalData *data = conn->privateData; vboxGlobalData *data = conn->privateData;
virNetworkDefPtr def = NULL; virNetworkDefPtr def = NULL;
virNetworkPtr ret = NULL; virNetworkPtr ret = NULL;
nsID *iid = NULL;
char *networkNameUtf8 = NULL; char *networkNameUtf8 = NULL;
/* vboxNetworkDefineXML() is not exactly "network definition" /* vboxNetworkDefineXML() is not exactly "network definition"
...@@ -4390,28 +5071,11 @@ static virNetworkPtr vboxNetworkDefineXML(virConnectPtr conn, const char *xml) { ...@@ -4390,28 +5071,11 @@ static virNetworkPtr vboxNetworkDefineXML(virConnectPtr conn, const char *xml) {
if ((def = virNetworkDefParseString(conn, xml)) == NULL) if ((def = virNetworkDefParseString(conn, xml)) == NULL)
goto cleanup; goto cleanup;
if (VIR_ALLOC(iid) < 0) {
virReportOOMError(conn);
goto cleanup;
}
if (virAsprintf(&networkNameUtf8, "HostInterfaceNetworking-%s", def->name) < 0) { if (virAsprintf(&networkNameUtf8, "HostInterfaceNetworking-%s", def->name) < 0) {
virReportOOMError(conn); virReportOOMError(conn);
goto cleanup; goto cleanup;
} }
nsIDFromChar(iid, def->uuid);
DEBUG("Network Name: %s", def->name);
DEBUG("Network UUID: "
"{%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}",
(unsigned)iid->m0, (unsigned)iid->m1,
(unsigned)iid->m2, (unsigned)iid->m3[0],
(unsigned)iid->m3[1], (unsigned)iid->m3[2],
(unsigned)iid->m3[3], (unsigned)iid->m3[4],
(unsigned)iid->m3[5], (unsigned)iid->m3[6],
(unsigned)iid->m3[7]);
if ((data->vboxObj) && (def->forwardType == VIR_NETWORK_FORWARD_NONE)) { if ((data->vboxObj) && (def->forwardType == VIR_NETWORK_FORWARD_NONE)) {
/* VirtualBox version 2.2.* has only one "hostonly" /* VirtualBox version 2.2.* has only one "hostonly"
* network called "vboxnet0" for linux * network called "vboxnet0" for linux
...@@ -4435,14 +5099,12 @@ static virNetworkPtr vboxNetworkDefineXML(virConnectPtr conn, const char *xml) { ...@@ -4435,14 +5099,12 @@ static virNetworkPtr vboxNetworkDefineXML(virConnectPtr conn, const char *xml) {
if (interfaceType == HostNetworkInterfaceType_HostOnly) { if (interfaceType == HostNetworkInterfaceType_HostOnly) {
unsigned char uuid[VIR_UUID_BUFLEN]; unsigned char uuid[VIR_UUID_BUFLEN];
nsID *vboxnet0IID = NULL;
PRUnichar *networkNameUtf16 = NULL; PRUnichar *networkNameUtf16 = NULL;
vboxIID *vboxnet0IID = NULL;
data->pFuncs->pfnUtf8ToUtf16(networkNameUtf8 , &networkNameUtf16);
networkInterface->vtbl->GetId(networkInterface, &vboxnet0IID); networkInterface->vtbl->GetId(networkInterface, &vboxnet0IID);
vboxIIDToUUID(uuid, vboxnet0IID);
nsIDtoChar(uuid, vboxnet0IID); data->pFuncs->pfnUtf8ToUtf16(networkNameUtf8 , &networkNameUtf16);
/* Currently support only one dhcp server per network /* Currently support only one dhcp server per network
* with contigious address space from start to end * with contigious address space from start to end
...@@ -4492,16 +5154,13 @@ static virNetworkPtr vboxNetworkDefineXML(virConnectPtr conn, const char *xml) { ...@@ -4492,16 +5154,13 @@ static virNetworkPtr vboxNetworkDefineXML(virConnectPtr conn, const char *xml) {
ret = virGetNetwork(conn, def->name, uuid); ret = virGetNetwork(conn, def->name, uuid);
DEBUG("Real Network UUID: " #if VBOX_API_VERSION == 2002
"{%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}", DEBUGUUID("Real Network UUID", vboxnet0IID);
(unsigned)vboxnet0IID->m0, (unsigned)vboxnet0IID->m1, vboxIIDUnalloc(vboxnet0IID);
(unsigned)vboxnet0IID->m2, (unsigned)vboxnet0IID->m3[0], #else
(unsigned)vboxnet0IID->m3[1], (unsigned)vboxnet0IID->m3[2], DEBUGPRUnichar("Real Network UUID", vboxnet0IID);
(unsigned)vboxnet0IID->m3[3], (unsigned)vboxnet0IID->m3[4], vboxIIDFree(vboxnet0IID);
(unsigned)vboxnet0IID->m3[5], (unsigned)vboxnet0IID->m3[6], #endif
(unsigned)vboxnet0IID->m3[7]);
data->pFuncs->pfnComUnallocMem(vboxnet0IID);
data->pFuncs->pfnUtf16Free(networkNameUtf16); data->pFuncs->pfnUtf16Free(networkNameUtf16);
} }
...@@ -4515,7 +5174,6 @@ static virNetworkPtr vboxNetworkDefineXML(virConnectPtr conn, const char *xml) { ...@@ -4515,7 +5174,6 @@ static virNetworkPtr vboxNetworkDefineXML(virConnectPtr conn, const char *xml) {
} }
cleanup: cleanup:
VIR_FREE(iid);
VIR_FREE(networkNameUtf8); VIR_FREE(networkNameUtf8);
virNetworkDefFree(def); virNetworkDefFree(def);
return ret; return ret;
...@@ -4773,15 +5431,14 @@ static char *vboxNetworkDumpXML(virNetworkPtr network, int flags ATTRIBUTE_UNUSE ...@@ -4773,15 +5431,14 @@ static char *vboxNetworkDumpXML(virNetworkPtr network, int flags ATTRIBUTE_UNUSE
if (interfaceType == HostNetworkInterfaceType_HostOnly) { if (interfaceType == HostNetworkInterfaceType_HostOnly) {
def->name = strdup(network->name); def->name = strdup(network->name);
if (def->name != NULL) { if (def->name != NULL) {
nsID *vboxnet0IID = NULL;
PRUnichar *networkNameUtf16 = NULL; PRUnichar *networkNameUtf16 = NULL;
IDHCPServer *dhcpServer = NULL; IDHCPServer *dhcpServer = NULL;
vboxIID *vboxnet0IID = NULL;
data->pFuncs->pfnUtf8ToUtf16(networkNameUtf8 , &networkNameUtf16);
networkInterface->vtbl->GetId(networkInterface, &vboxnet0IID); networkInterface->vtbl->GetId(networkInterface, &vboxnet0IID);
vboxIIDToUUID(def->uuid, vboxnet0IID);
nsIDtoChar(def->uuid, vboxnet0IID); data->pFuncs->pfnUtf8ToUtf16(networkNameUtf8 , &networkNameUtf16);
def->forwardType = VIR_NETWORK_FORWARD_NONE; def->forwardType = VIR_NETWORK_FORWARD_NONE;
...@@ -4857,17 +5514,13 @@ static char *vboxNetworkDumpXML(virNetworkPtr network, int flags ATTRIBUTE_UNUSE ...@@ -4857,17 +5514,13 @@ static char *vboxNetworkDumpXML(virNetworkPtr network, int flags ATTRIBUTE_UNUSE
data->pFuncs->pfnUtf16Free(ipAddressUtf16); data->pFuncs->pfnUtf16Free(ipAddressUtf16);
} }
#if VBOX_API_VERSION == 2002
DEBUG("Network UUID: " DEBUGUUID("Network UUID", vboxnet0IID);
"{%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}", vboxIIDUnalloc(vboxnet0IID);
(unsigned)vboxnet0IID->m0, (unsigned)vboxnet0IID->m1, #else
(unsigned)vboxnet0IID->m2, (unsigned)vboxnet0IID->m3[0], DEBUGPRUnichar("Network UUID", vboxnet0IID);
(unsigned)vboxnet0IID->m3[1], (unsigned)vboxnet0IID->m3[2], vboxIIDFree(vboxnet0IID);
(unsigned)vboxnet0IID->m3[3], (unsigned)vboxnet0IID->m3[4], #endif
(unsigned)vboxnet0IID->m3[5], (unsigned)vboxnet0IID->m3[6],
(unsigned)vboxnet0IID->m3[7]);
data->pFuncs->pfnComUnallocMem(vboxnet0IID);
data->pFuncs->pfnUtf16Free(networkNameUtf16); data->pFuncs->pfnUtf16Free(networkNameUtf16);
} else { } else {
vboxError(network->conn, VIR_ERR_SYSTEM_ERROR, vboxError(network->conn, VIR_ERR_SYSTEM_ERROR,
...@@ -4956,8 +5609,13 @@ virDriver NAME(Driver) = { ...@@ -4956,8 +5609,13 @@ virDriver NAME(Driver) = {
NULL, /* domainMemoryPeek */ NULL, /* domainMemoryPeek */
nodeGetCellsFreeMemory, /* nodeGetCellsFreeMemory */ nodeGetCellsFreeMemory, /* nodeGetCellsFreeMemory */
nodeGetFreeMemory, /* getFreeMemory */ nodeGetFreeMemory, /* getFreeMemory */
#if VBOX_API_VERSION == 2002
NULL, /* domainEventRegister */ NULL, /* domainEventRegister */
NULL, /* domainEventDeregister */ NULL, /* domainEventDeregister */
#else
vboxDomainEventRegister, /* domainEventRegister */
vboxDomainEventDeregister, /* domainEventDeregister */
#endif
NULL, /* domainMigratePrepare2 */ NULL, /* domainMigratePrepare2 */
NULL, /* domainMigrateFinish2 */ NULL, /* domainMigrateFinish2 */
NULL, /* nodeDeviceDettach */ NULL, /* nodeDeviceDettach */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册