VirtualBox

source: vbox/trunk/src/VBox/Main/HostDVDDriveImpl.cpp@ 20988

Last change on this file since 20988 was 20977, checked in by vboxsync, 15 years ago

API: weed out NULL strings, as many clients cannot use them

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 3.6 KB
Line 
1/** @file
2 *
3 * VirtualBox COM class implementation
4 */
5
6/*
7 * Copyright (C) 2006-2007 Sun Microsystems, Inc.
8 *
9 * This file is part of VirtualBox Open Source Edition (OSE), as
10 * available from http://www.virtualbox.org. This file is free software;
11 * you can redistribute it and/or modify it under the terms of the GNU
12 * General Public License (GPL) as published by the Free Software
13 * Foundation, in version 2 as it comes in the "COPYING" file of the
14 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
15 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
16 *
17 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
18 * Clara, CA 95054 USA or visit http://www.sun.com if you need
19 * additional information or have any questions.
20 */
21
22#include "HostDVDDriveImpl.h"
23#include <iprt/cpputils.h>
24
25// constructor / destructor
26/////////////////////////////////////////////////////////////////////////////
27
28DEFINE_EMPTY_CTOR_DTOR (HostDVDDrive)
29
30HRESULT HostDVDDrive::FinalConstruct()
31{
32 return S_OK;
33}
34
35void HostDVDDrive::FinalRelease()
36{
37 uninit();
38}
39
40// public initializer/uninitializer for internal purposes only
41/////////////////////////////////////////////////////////////////////////////
42
43/**
44 * Initializes the host DVD drive object.
45 *
46 * @param aName Name of the drive.
47 * @param aUdi Universal device identifier (currently may be NULL).
48 * @param aDescription Human-readable drive description (may be NULL).
49 *
50 * @return COM result indicator.
51 */
52HRESULT HostDVDDrive::init (IN_BSTR aName,
53 IN_BSTR aUdi /* = NULL */,
54 IN_BSTR aDescription /* = NULL */)
55{
56 ComAssertRet (aName, E_INVALIDARG);
57
58 /* Enclose the state transition NotReady->InInit->Ready */
59 AutoInitSpan autoInitSpan (this);
60 AssertReturn (autoInitSpan.isOk(), E_FAIL);
61
62 unconst (mName) = aName;
63 if (!aUdi)
64 unconst (mUdi) = "";
65 else
66 unconst (mUdi) = aUdi;
67 if (!aDescription)
68 unconst (mDescription) = "";
69 else
70 unconst (mDescription) = aDescription;
71
72 /* Confirm the successful initialization */
73 autoInitSpan.setSucceeded();
74
75 return S_OK;
76}
77
78/**
79 * Uninitializes the instance and sets the ready flag to FALSE.
80 * Called either from FinalRelease() or by the parent when it gets destroyed.
81 */
82void HostDVDDrive::uninit()
83{
84 /* Enclose the state transition Ready->InUninit->NotReady */
85 AutoUninitSpan autoUninitSpan (this);
86 if (autoUninitSpan.uninitDone())
87 return;
88
89 unconst (mDescription).setNull();
90 unconst (mName).setNull();
91}
92
93// IHostDVDDrive properties
94/////////////////////////////////////////////////////////////////////////////
95
96STDMETHODIMP HostDVDDrive::COMGETTER(Name) (BSTR *aName)
97{
98 CheckComArgOutPointerValid(aName);
99
100 AutoCaller autoCaller (this);
101 CheckComRCReturnRC (autoCaller.rc());
102
103 /* mName is constant during life time, no need to lock */
104
105 mName.cloneTo (aName);
106
107 return S_OK;
108}
109
110STDMETHODIMP HostDVDDrive::COMGETTER(Description) (BSTR *aDescription)
111{
112 CheckComArgOutPointerValid(aDescription);
113
114 AutoCaller autoCaller (this);
115 CheckComRCReturnRC (autoCaller.rc());
116
117 /* mDescription is constant during life time, no need to lock */
118
119 mDescription.cloneTo (aDescription);
120
121 return S_OK;
122}
123
124STDMETHODIMP HostDVDDrive::COMGETTER(Udi) (BSTR *aUdi)
125{
126 CheckComArgOutPointerValid(aUdi);
127
128 AutoCaller autoCaller (this);
129 CheckComRCReturnRC (autoCaller.rc());
130
131 /* mUdi is constant during life time, no need to lock */
132
133 mUdi.cloneTo (aUdi);
134
135 return S_OK;
136}
137/* vi: set tabstop=4 shiftwidth=4 expandtab: */
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette