SetupDiSetClassInstallParamsW Windows API не работает - PullRequest
0 голосов
/ 30 апреля 2020

Ниже приведен код, вызывающий метод Windows SetupDiSetClassInstallParamsW -

 bool
Util::SvmDisableNic(HDEVINFO devInfoSet, SP_DEVINFO_DATA deviceInfo)
{
   SP_PROPCHANGE_PARAMS params = {0};
   SP_DEVINSTALL_PARAMS_W installParams = {0};

   //
   // Disable device
   //
   params.ClassInstallHeader.cbSize = sizeof(SP_CLASSINSTALL_HEADER);
   params.ClassInstallHeader.InstallFunction = DIF_PROPERTYCHANGE;
   params.StateChange = DICS_DISABLE;
   params.Scope = DICS_FLAG_GLOBAL;
   params.HwProfile = 0;

   if (!SetupDiSetClassInstallParamsW(devInfoSet, &deviceInfo,
                                      &(params.ClassInstallHeader),
                                      sizeof params)) {
      DWORD err = GetLastError();
      SYSMSG_FUNC(
         Debug, _T("Failed setting device params to disable: Err: 0x%X"), err);
      return false;
   }

Этот код успешно выполняется, однако в нескольких виртуальных машинах происходит сбой SetupDiSetClassInstallParamsW, а GetLastError возвращает ошибку код ошибки 0xD. От Microsoft до c похоже, что это соответствует ERROR_INVALID_DATA. Виртуальные машины, в которых этот код работает успешно, и те, в которых он работает, идентичны с точки зрения конфигурации аппаратного / программного обеспечения. Любая идея, как мы можем отладить, почему этот windows API не работает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...