none
UpdateDriverForPlugAndPlayDevices with Monitor EDID Overrides RRS feed

  • Question

  • I followed these instructions:

    Overriding Monitor EDIDs with an INF

    ...to create an INF file to override a display's EDID. I can apply the signed EDID override INF driver via Device Manager, but when I try to use devcon to programmatically install the driver, UpdateDriverForPlugAndPlayDevices returns ERROR_NO_MORE_ITEMS despite INSTALLFLAG_FORCE flag being set. Looking at setupapi.dev.log, I see the following:

    >>>  [Device Install (UpdateDriverForPlugAndPlayDevices) - MONITOR\TV@5931]
    >>>  Section start 2016/12/12 17:32:51.168
          cmd: "D:\devcon.exe" update "D:\monitor.inf" "MONITOR\TV@5931"
         dvi: Set selected driver complete.
         dvi: {Build Driver List} 17:32:51.206
         dvi:      Searching for hardware ID(s):
         dvi:           monitor\tv@5931
         dvi:      Searching for compatible ID(s):
         dvi:           *pnp09ff
         cpy:      Policy is set to make all digital signatures equal.
         dvi:      Processing a single INF: 'd:\monitor.inf'
         inf:      Opened INF: 'd:\monitor.inf' ([strings])
         dvi: {Build Driver List - exit(0x00000000)} 17:32:51.272
         dvi: {DIF_SELECTBESTCOMPATDRV} 17:32:51.274
         dvi:      Using exported function 'MonitorClassInstaller' in module 'C:\windows\system32\Montr_CI.dll'.
         dvi:      Class installer == Montr_CI.dll,MonitorClassInstaller
         dvi:      No CoInstallers found
         dvi:      Class installer: Enter 17:32:51.299
         dvi:      Class installer: Exit
         dvi:      Default installer: Enter 17:32:51.306
         dvi:           {Select Best Driver}
    !    dvi:                Selecting driver failed(0xe0000228)
         dvi:           {Select Best Driver - exit(0xe0000228)}
    !    dvi:      Default installer: failed!
    !    dvi:      Error 0xe0000228: There are no compatible drivers for this device.
         dvi: {DIF_SELECTBESTCOMPATDRV - exit(0xe0000228)} 17:32:51.316
         dvi: {DIF_DESTROYPRIVATEDATA} 17:32:51.319
         dvi:      Class installer: Enter 17:32:51.321
         dvi:      Class installer: Exit
         dvi:      Default installer: Enter 17:32:51.327
         dvi:      Default installer: Exit
         dvi: {DIF_DESTROYPRIVATEDATA - exit(0xe000020e)} 17:32:51.330
    <<<  Section end 2016/12/12 17:32:51.334
    <<<  [Exit status: SUCCESS]

    What exactly am I doing wrong? I know that Monitor EDID Overrides are kind of a special case as they are not an actual driver and use the Generic PnP Monitor driver under the hood. Is there something special required in the monitor.inf EDID override file that isn't explained in the MSDN example in order for the driver to be loaded procedurally? Is there something else needed to override the "Select Best Driver" behavior and force install the EDID override driver?

    Thank you!

     

    Tuesday, December 13, 2016 2:10 AM

Answers

  • Is there a monitor device enumerated on the system that has the hw or compatible IDs that you listed in the inf?

    d -- This posting is provided "AS IS" with no warranties, and confers no rights.

    • Marked as answer by JasonStern Wednesday, December 14, 2016 5:46 PM
    Tuesday, December 13, 2016 3:51 AM

All replies

  • Is there a monitor device enumerated on the system that has the hw or compatible IDs that you listed in the inf?

    d -- This posting is provided "AS IS" with no warranties, and confers no rights.

    • Marked as answer by JasonStern Wednesday, December 14, 2016 5:46 PM
    Tuesday, December 13, 2016 3:51 AM
  • Nailed it! There were multiple variants of the device that the EDID override driver was being applied to, and one variant had a mismatch. Thanks!
    Wednesday, December 14, 2016 5:46 PM