Ошибка 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);
Обратите внимание, что один и тот же код может выполняться в приложении (не в модульном тесте)