VirtualBox

Ignore:
Timestamp:
Feb 24, 2010 4:24:33 PM (15 years ago)
Author:
vboxsync
Message:

Main: Bstr makeover (third attempt) -- make Bstr(NULL) and Bstr() behave the same; resulting cleanup; make some more internal methods use Utf8Str instead of Bstr; fix a lot of CheckComArgNotNull??() usage

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Main/ConsoleImpl.cpp

    r26615 r26753  
    574574{
    575575    if (!enabledGuestPropertiesVRDP())
    576     {
    577576        return;
    578     }
     577
     578    Bstr bstrReadOnlyGuest(L"RDONLYGUEST");
    579579
    580580    int rc;
     
    584584    if (RT_SUCCESS(rc))
    585585    {
    586         mMachine->SetGuestProperty(Bstr(pszPropertyName), Bstr(""), Bstr("RDONLYGUEST"));
     586        mMachine->SetGuestProperty(Bstr(pszPropertyName), NULL, bstrReadOnlyGuest);
    587587        RTStrFree(pszPropertyName);
    588588    }
     
    591591    if (RT_SUCCESS(rc))
    592592    {
    593         mMachine->SetGuestProperty(Bstr(pszPropertyName), Bstr(""), Bstr("RDONLYGUEST"));
     593        mMachine->SetGuestProperty(Bstr(pszPropertyName), NULL, bstrReadOnlyGuest);
    594594        RTStrFree(pszPropertyName);
    595595    }
     
    598598    if (RT_SUCCESS(rc))
    599599    {
    600         mMachine->SetGuestProperty(Bstr(pszPropertyName), Bstr(""), Bstr("RDONLYGUEST"));
     600        mMachine->SetGuestProperty(Bstr(pszPropertyName), NULL, bstrReadOnlyGuest);
    601601        RTStrFree(pszPropertyName);
    602602    }
     
    606606    if (RT_SUCCESS(rc))
    607607    {
    608         mMachine->SetGuestProperty(Bstr("/VirtualBox/HostInfo/VRDP/LastDisconnectedClient"), Bstr(pszClientId), Bstr("RDONLYGUEST"));
     608        mMachine->SetGuestProperty(Bstr("/VirtualBox/HostInfo/VRDP/LastDisconnectedClient"), Bstr(pszClientId), bstrReadOnlyGuest);
    609609        RTStrFree(pszClientId);
    610610    }
     
    11901190
    11911191// static
    1192 DECLCALLBACK(int)
    1193 Console::doGuestPropNotification(void *pvExtension, uint32_t u32Function,
    1194                                  void *pvParms, uint32_t cbParms)
     1192DECLCALLBACK(int) Console::doGuestPropNotification(void *pvExtension,
     1193                                                   uint32_t u32Function,
     1194                                                   void *pvParms,
     1195                                                   uint32_t cbParms)
    11951196{
    11961197    using namespace guestProp;
     
    12121213    Bstr value(pCBData->pcszValue);
    12131214    Bstr flags(pCBData->pcszFlags);
    1214     if (   !name.isNull()
    1215         && (!value.isNull() || pCBData->pcszValue == NULL)
    1216         && (!flags.isNull() || pCBData->pcszFlags == NULL)
    1217        )
    1218     {
    1219         ComObjPtr<Console> ptrConsole = reinterpret_cast<Console *>(pvExtension);
    1220         HRESULT hrc = ptrConsole->mControl->PushGuestProperty(name,
    1221                                                               value,
    1222                                                               pCBData->u64Timestamp,
    1223                                                               flags);
    1224         if (SUCCEEDED(hrc))
    1225             rc = VINF_SUCCESS;
    1226         else
    1227         {
    1228             LogFunc(("Console::doGuestPropNotification: hrc=%Rhrc pCBData={.pcszName=%s, .pcszValue=%s, .pcszFlags=%s}\n",
    1229                      pCBData->pcszName, pCBData->pcszValue, pCBData->pcszFlags));
    1230             rc = Global::vboxStatusCodeFromCOM(hrc);
    1231         }
    1232     }
     1215    ComObjPtr<Console> ptrConsole = reinterpret_cast<Console *>(pvExtension);
     1216    HRESULT hrc = ptrConsole->mControl->PushGuestProperty(name,
     1217                                                          value,
     1218                                                          pCBData->u64Timestamp,
     1219                                                          flags);
     1220    if (SUCCEEDED(hrc))
     1221        rc = VINF_SUCCESS;
    12331222    else
    1234         rc = VERR_NO_MEMORY;
     1223    {
     1224        LogFunc(("Console::doGuestPropNotification: hrc=%Rhrc pCBData={.pcszName=%s, .pcszValue=%s, .pcszFlags=%s}\n",
     1225                 pCBData->pcszName, pCBData->pcszValue, pCBData->pcszFlags));
     1226        rc = Global::vboxStatusCodeFromCOM(hrc);
     1227    }
    12351228    return rc;
    12361229}
     
    12481241    Utf8Str utf8Patterns(aPatterns);
    12491242    parm[0].type = VBOX_HGCM_SVC_PARM_PTR;
     1243    // mutableRaw() returns NULL for an empty string
     1244//     if ((parm[0].u.pointer.addr = utf8Patterns.mutableRaw()))
     1245//         parm[0].u.pointer.size = (uint32_t)utf8Patterns.length() + 1;
     1246//     else
     1247//     {
     1248//         parm[0].u.pointer.addr = (void*)"";
     1249//         parm[0].u.pointer.size = 1;
     1250//     }
    12501251    parm[0].u.pointer.addr = utf8Patterns.mutableRaw();
    12511252    parm[0].u.pointer.size = (uint32_t)utf8Patterns.length() + 1;
     
    13641365    try
    13651366    {
    1366         Bstr                pattern("");
    1367         hrc = doEnumerateGuestProperties(pattern, ComSafeArrayAsOutParam(namesOut),
     1367        Bstr pattern;
     1368        hrc = doEnumerateGuestProperties(pattern,
     1369                                         ComSafeArrayAsOutParam(namesOut),
    13681370                                         ComSafeArrayAsOutParam(valuesOut),
    13691371                                         ComSafeArrayAsOutParam(timestampsOut),
     
    13711373        if (SUCCEEDED(hrc))
    13721374        {
    1373             std::vector <BSTR>      names;
    1374             std::vector <BSTR>      values;
    1375             std::vector <ULONG64>   timestamps;
    1376             std::vector <BSTR>      flags;
     1375            std::vector<BSTR>      names;
     1376            std::vector<BSTR>      values;
     1377            std::vector<ULONG64>   timestamps;
     1378            std::vector<BSTR>      flags;
    13771379            for (size_t i = 0; i < namesOut.size(); ++i)
    13781380            {
     
    13921394            com::SafeArray<ULONG64> timestampsIn(timestamps);
    13931395            com::SafeArray<BSTR>    flagsIn(flags);
    1394             if (   namesIn.isNull()
    1395                 || valuesIn.isNull()
    1396                 || timestampsIn.isNull()
    1397                 || flagsIn.isNull()
    1398                )
    1399                 throw std::bad_alloc();
    14001396            /* PushGuestProperties() calls DiscardSettings(), which calls us back */
    14011397            mControl->PushGuestProperties(ComSafeArrayAsInParam(namesIn),
     
    25942590{
    25952591#ifdef VBOX_WITH_USB
    2596     CheckComArgNotNull(aAddress);
     2592    CheckComArgStrNotEmptyOrNull(aAddress);
    25972593    CheckComArgOutPointerValid(aDevice);
    25982594
     
    26642660Console::CreateSharedFolder(IN_BSTR aName, IN_BSTR aHostPath, BOOL aWritable)
    26652661{
    2666     CheckComArgNotNull(aName);
    2667     CheckComArgNotNull(aHostPath);
     2662    CheckComArgStrNotEmptyOrNull(aName);
     2663    CheckComArgStrNotEmptyOrNull(aHostPath);
    26682664
    26692665    AutoCaller autoCaller(this);
     
    27322728STDMETHODIMP Console::RemoveSharedFolder(IN_BSTR aName)
    27332729{
    2734     CheckComArgNotNull(aName);
     2730    CheckComArgStrNotEmptyOrNull(aName);
    27352731
    27362732    AutoCaller autoCaller(this);
     
    27982794    LogFlowThisFunc(("aName='%ls' mMachineState=%08X\n", aName, mMachineState));
    27992795
    2800     CheckComArgNotNull(aName);
     2796    CheckComArgStrNotEmptyOrNull(aName);
    28012797    CheckComArgOutPointerValid(aProgress);
    28022798
     
    77257721         * (i.e. creating a snapshot online)
    77267722         */
    7727         ComAssertThrow(    (!pTask->bstrSavedStateFile.isNull() && pTask->fTakingSnapshotOnline)
    7728                         || (pTask->bstrSavedStateFile.isNull() && !pTask->fTakingSnapshotOnline),
     7723        ComAssertThrow(    (!pTask->bstrSavedStateFile.isEmpty() && pTask->fTakingSnapshotOnline)
     7724                        || ( pTask->bstrSavedStateFile.isEmpty() && !pTask->fTakingSnapshotOnline),
    77297725                       rc = E_FAIL);
    77307726
     
    80408036            task->mProgress->notifyComplete(rc,
    80418037                                            COM_IIDOF(IConsole),
    8042                                             Console::getComponentName(),
     8038                                            (CBSTR)Console::getComponentName(),
    80438039                                            errMsg.c_str());
    80448040        else
Note: See TracChangeset for help on using the changeset viewer.

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