HostFloppyDriveImpl.cpp revision f72cbd6a549c34992fa79cce84600fe2b92b3299
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync/** @file
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync *
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * VirtualBox COM class implementation
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync/*
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * Copyright (C) 2006-2007 Sun Microsystems, Inc.
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync *
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * available from http://www.virtualbox.org. This file is free software;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * you can redistribute it and/or modify it under the terms of the GNU
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * General Public License (GPL) as published by the Free Software
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync *
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * Clara, CA 95054 USA or visit http://www.sun.com if you need
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * additional information or have any questions.
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#include "HostFloppyDriveImpl.h"
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#include <iprt/cpputils.h>
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync// constructor / destructor
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync/////////////////////////////////////////////////////////////////////////////
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncDEFINE_EMPTY_CTOR_DTOR (HostFloppyDrive)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncHRESULT HostFloppyDrive::FinalConstruct()
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync{
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync return S_OK;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync}
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncvoid HostFloppyDrive::FinalRelease()
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync{
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync uninit();
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync}
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync// public initializer/uninitializer for internal purposes only
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync/////////////////////////////////////////////////////////////////////////////
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync/**
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * Initializes the host floppy drive object.
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync *
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * @param aName Name of the drive.
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * @param aUdi Universal device identifier (currently may be NULL).
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * @param aDescription Human-readable drive description (may be NULL).
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync *
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * @return COM result indicator.
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncHRESULT HostFloppyDrive::init (IN_BSTR aName,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync IN_BSTR aUdi /* = NULL */,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync IN_BSTR aDescription /* = NULL */)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync{
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync ComAssertRet (aName, E_INVALIDARG);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync /* Enclose the state transition NotReady->InInit->Ready */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync AutoInitSpan autoInitSpan (this);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync AssertReturn (autoInitSpan.isOk(), E_FAIL);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync unconst (mName) = aName;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync unconst (mUdi) = aUdi;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync unconst (mDescription) = aDescription;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync /* Confirm the successful initialization */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync autoInitSpan.setSucceeded();
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync return S_OK;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync}
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync/**
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * Uninitializes the instance and sets the ready flag to FALSE.
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * Called either from FinalRelease() or by the parent when it gets destroyed.
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncvoid HostFloppyDrive::uninit()
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync{
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync /* Enclose the state transition Ready->InUninit->NotReady */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync AutoUninitSpan autoUninitSpan (this);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync if (autoUninitSpan.uninitDone())
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync return;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync unconst (mName).setNull();
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync}
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync// IHostFloppyDrive properties
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync/////////////////////////////////////////////////////////////////////////////
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncSTDMETHODIMP HostFloppyDrive::COMGETTER(Name) (BSTR *aName)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync{
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync CheckComArgOutPointerValid(aName);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync AutoCaller autoCaller (this);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync CheckComRCReturnRC (autoCaller.rc());
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync /* mName is constant during life time, no need to lock */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync mName.cloneTo (aName);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync return S_OK;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync}
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncSTDMETHODIMP HostFloppyDrive::COMGETTER(Description) (BSTR *aDescription)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync{
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync CheckComArgOutPointerValid(aDescription);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync AutoCaller autoCaller (this);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync CheckComRCReturnRC (autoCaller.rc());
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync /* mDescription is constant during life time, no need to lock */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync mDescription.cloneTo (aDescription);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync return S_OK;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync}
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncSTDMETHODIMP HostFloppyDrive::COMGETTER(Udi) (BSTR *aUdi)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync{
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync CheckComArgOutPointerValid(aUdi);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync AutoCaller autoCaller (this);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync CheckComRCReturnRC (autoCaller.rc());
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync /* mUdi is constant during life time, no need to lock */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync mUdi.cloneTo (aUdi);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync return S_OK;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync}
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync/* vi: set tabstop=4 shiftwidth=4 expandtab: */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync