Ошибка при конвертации BSTR в QString

252
02 ноября 2017, 07:11

У меня есть функция, которая делает выборку по WMI, вот пример - https://msdn.microsoft.com/ru-ru/library/aa390422(v=vs.85).aspx. Всё работает, если я беру поля типа string или uint64, но если поле типа uint32 или uint16, то при попытки их конвертации из BSTR в QString методом QString::fromStdWString вылетает ошибка. Вот здесь можно посмотреть типы полей - https://msdn.microsoft.com/en-us/library/aa394102(v=vs.85).aspx.

Сама функция:

...
while (spEnumerator.get())
        {
            HRESULT hr = spEnumerator.get()->Next(WBEM_INFINITE, 1,
                &pclsObj, &uReturn);
            if(0 == uReturn)
            {
                break;
            }
            auto deleter = [](IWbemClassObject* p) { p->Release(); };
            std::unique_ptr<IWbemClassObject, decltype(deleter)> spclsObj(pclsObj, deleter);
            VARIANT vtProp;
            for (auto k : field_caption)
            {
                spclsObj.get()->Get(reinterpret_cast<LPCWSTR>(k.first.utf16()), 0, &vtProp, 0, 0);
                records.enqueue(QPair<QString, QString>(k.second, QString::fromStdWString(vtProp.bstrVal)));
            }
            VariantClear(&vtProp);
        }
...

filed_caption - это пары типа Имя_поля, расшифровка, пример пары: "UserName" "Имя пользователя"

READ ALSO
Странные ошибки в visual studio

Странные ошибки в visual studio

Уважаемое комьюнити, столкнулся с проблемой в visual studio, которое невероятно раздражаетА именно:

242
Объединение интервалов

Объединение интервалов

Имеется n-промежутков, вида: [a1,b1];[a2,b2];

258
Пирамидальная сортировка на с++

Пирамидальная сортировка на с++

Хочу сделать сортировку пирамидальную (обратную) То есть что бы массив в котором есть числа 4,5,3,0 отсортировало не так 0,3,4,5, а так 5,4,3,0Вот функции...

258
Запуск процесса в памяти в бесконечном цикле

Запуск процесса в памяти в бесконечном цикле

Написать программу, которая бы запускала в памяти еще один процесс и оставляла бы его работать в бесконечном циклеПри повторном запуске...

207