Ошибка CoInitializeEx в CppUnitTestFramework

Я пытаюсь выполнить модульное тестирование запроса WMI с помощью CppUnitTestFramework.

Похоже, что WMI требует COINIT_MULTITHREADED.

Код:

::CoInitializeEx(0, COINIT_MULTITHREADED | COINIT_APARTMENTTHREADED);

Сообщение об ошибке:

Невозможно изменить режим потока после его установки.

Как это исправить?


После добавления файла testsettings CoInitializeEx может успешно работать.

<?xml version="1.0" encoding="UTF-8"?>
<TestSettings name="TestSettings1" id="c3ec3ec8-946e-4e0c-bb78-dd99014a8278" xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010">
  <Description>These are default test settings for a local test run.</Description>
  <Execution>
    <ExecutionThread apartmentState="MTA" />
  </Execution>
</TestSettings>

Но wbemServices_->ExecQuery возвращается 0x80041003(IDispatch error #3587)

HRESULT hr = 0;
CComPtr<IEnumWbemClassObject> enumWbemClassObject;
hr = wbemServices_->ExecQuery(L"WQL", CComBSTR(L"SELECT SerialNumber FROM Win32_PhysicalMedia"), WBEM_FLAG_FORWARD_ONLY, NULL, &enumWbemClassObject);

Обратите внимание, что один и тот же код может выполняться в приложении (не в модульном тесте)

0 ответов

Другие вопросы по тегам