New
#61
IMHO That's incorrect. It might appear that way but, behind the scene, it's the device vendor that determines acceptable matching IDs for a driver. I'll explain.
Every device has one or more hardware IDs. It also has Compatible IDs. These IDs are burned into the firmware by the vendor when the device was built. By definition, the first h/w ID in the list is its "Device ID". Many spec analysis programs may only show the Device ID as the h/w id. They may not display the full list ids.
When Windows searches for suitable INF matches it uses the full list of both Hardware IDs and Compatible IDs for the device. If any of the IDs defined within an INF match any h/w or compatible ID, the INF becomes (what i'll call) a driver candidate. When done searching INFs if Windows found more then one candidate, it evaluates and ranks each candidate. It uses driver "rank" to select the one it thinks the best match.
So, partial matching isn't a function of how you update the driver but rather
- The list of IDs burned into a device by the vendor plus
- The IDs defined in an INF (as determined by the driver developer to indicate what IDs the driver supports)
As an example, find below the h/w and compatible ids I found for the Realtek chip on a PC. (Use Device Manager to see them. Right click->Properties tab. Select Hardware ids then Compatible ids from the pull down menu). Windows would accept an INF that matches any of these. So, bottom line, it's the vendor that defines the IDs and partial matches that are acceptable
/* EDIT */
Note: For Windows to ultimately accept an INF also requires compatible architectures and OS. I refer to INF acceptance or matching by ID only just for easier reading
Hardware ids
Compatible idsHDAUDIO\FUNC_01&VEN_10EC&DEV_0280&SUBSYS_102805A4&REV_1000
HDAUDIO\FUNC_01&VEN_10EC&DEV_0280&SUBSYS_102805A4
HDAUDIO\FUNC_01&CTLR_VEN_8086&CTLR_DEV_8C20&VEN_10EC&DEV_0280&REV_1000
HDAUDIO\FUNC_01&CTLR_VEN_8086&VEN_10EC&DEV_0280&REV_1000
HDAUDIO\FUNC_01&VEN_10EC&DEV_0280&REV_1000
HDAUDIO\FUNC_01&CTLR_VEN_8086&CTLR_DEV_8C20&VEN_10EC&DEV_0280
HDAUDIO\FUNC_01&CTLR_VEN_8086&VEN_10EC&DEV_0280
HDAUDIO\FUNC_01&VEN_10EC&DEV_0280
HDAUDIO\FUNC_01&CTLR_VEN_8086&CTLR_DEV_8C20&VEN_10EC
HDAUDIO\FUNC_01&CTLR_VEN_8086&VEN_10EC
HDAUDIO\FUNC_01&VEN_10EC
HDAUDIO\FUNC_01&CTLR_VEN_8086&CTLR_DEV_8C20
HDAUDIO\FUNC_01&CTLR_VEN_8086
HDAUDIO\FUNC_01&GF&VEN_10EC&DEV_0280&SUBSYS_102805A4&REV_1000
HDAUDIO\FUNC_01
Last edited by ComputerGeek; 19 Jan 2017 at 12:45.