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
-- v4: setupapi: use INF parser to read class GUID and class name setupapi/tests: add tests for reading INF class with %strkey% tokens