Skip to content

setupapi: use INF parser to read class GUID and class name

Previously, SetupDiGetINFClassW() read INF files with GetPrivateProfileString(), which does not substitute %strkey% tokens.

This caused device installation to fail for devices which had driver INF files using %strkey% tokens in Version section.

An example of such device is Vernier LabQuest Mini (08f7:0008) for which Vernier's LoggerPro application includes a driver.

The INF file in question adds a new device setup class and has following entries in Version section:

  Class = %ClassName%
  ClassGuid = %DeviceClassGUID%

Strings section includes following entries:

  DeviceClassGUID = "{6B8429BF-10AD-4b66-9FBA-2FE72B891721}"
  ClassName = "VST_WinUSB"

Previously, when LoggerPro was installed and LabQuest Mini was hotplugged, device installation failed with the following error:

  fixme:setupapi:SetupDiGetINFClassW failed to convert "L"%DeviceClassGUID"" into a guid

This caused GUID_NULL to be used and Class was not set to the registry for the device.

With this commit, correct class GUID and names are set to the device registry entry.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=56579

Edited by Tuomas Räsänen

Merge request reports

Loading