Author Topic: Windows Server: Microsoft driver not registered properly?  (Read 4205 times)

0 Members and 1 Guest are viewing this topic.

Offline ManulTopic starter

  • Super Contributor
  • ***
  • Posts: 1152
  • Country: lt
Windows Server: Microsoft driver not registered properly?
« on: December 25, 2020, 02:58:07 am »
Hello,

If someone have a knowledge in windows drivers I would be very thankful. I have a laptop PC, Windows 10 and Windows Server 2019 on my hands. The internal touchpad is working as a HID over I2C. Default driver for this is I2C HID Miniport driver (hidi2c.sys). Both 2019 and Win10 has it, but 2019 just refuses to use it. This looked strange to me so I took both install images (wim files) to compare.

First what I noticed, that on 2019, inside Windows\INF the hidi2c.inf file does not have a corresponding .pnf (compiled inf). Also the offline driver import logs are different (these imports are done by Microsoft obviously, the images are original):

Win10 (All good):
Code: [Select]
     sto: {Import Driver Package: D:\wd\compilerTemp\BMT.SE.kyappx5f.5lp\Starter\Windows\WinSxS\amd64_dual_hidi2c.inf_31bf3856ad364e35_10.0.19041.1_none_28eb57ba9670482a\hidi2c.inf} 09:13:40.577
     sto:      Driver Store   = D:\wd\compilerTemp\BMT.SE.kyappx5f.5lp\Starter\Windows\System32\DriverStore (10.0.19041)
     sto:      Driver Package = D:\wd\compilerTemp\BMT.SE.kyappx5f.5lp\Starter\Windows\WinSxS\amd64_dual_hidi2c.inf_31bf3856ad364e35_10.0.19041.1_none_28eb57ba9670482a\hidi2c.inf
     sto:      Architecture   = amd64
     sto:      Flags          = 0x00000245
     inf:      Provider       = Microsoft
     inf:      Class GUID     = {745a17a0-74d3-11d0-b6fe-00a0c90f57da}
     inf:      Driver Version = 06/21/2006,10.0.19041.1
     inf:      Version Flags  = 0x00000001
     inf:      {Query Configurability: D:\wd\compilerTemp\BMT.SE.kyappx5f.5lp\Starter\Windows\WinSxS\amd64_dual_hidi2c.inf_31bf3856ad364e35_10.0.19041.1_none_28eb57ba9670482a\hidi2c.inf} 09:13:40.593
     inf:           Driver package 'hidi2c.inf' is configurable.
     inf:      {Query Configurability: exit(0x00000000)} 09:13:40.593
     sig:      Signer Score  = 0x0D000003 (Inbox)
     flq:      {FILE_QUEUE_COMMIT} 09:13:40.593
     flq:           Hardlinking 'D:\wd\compilerTemp\BMT.SE.kyappx5f.5lp\Starter\Windows\WinSxS\amd64_dual_hidi2c.inf_31bf3856ad364e35_10.0.19041.1_none_28eb57ba9670482a\hidi2c.inf' to 'D:\wd\compilerTemp\BMT.SE.kyappx5f.5lp\Starter\Windows\System32\DriverStore\FileRepository\hidi2c.inf_amd64_aad0f43cb9f97e75\hidi2c.inf'.
     flq:           Hardlinking 'D:\wd\compilerTemp\BMT.SE.kyappx5f.5lp\Starter\Windows\WinSxS\amd64_dual_hidi2c.inf_31bf3856ad364e35_10.0.19041.1_none_28eb57ba9670482a\hidi2c.sys' to 'D:\wd\compilerTemp\BMT.SE.kyappx5f.5lp\Starter\Windows\System32\DriverStore\FileRepository\hidi2c.inf_amd64_aad0f43cb9f97e75\hidi2c.sys'.
     flq:      {FILE_QUEUE_COMMIT - exit(0x00000000)} 09:13:40.593
     idb:      {Register Driver Package: D:\wd\compilerTemp\BMT.SE.kyappx5f.5lp\Starter\Windows\System32\DriverStore\FileRepository\hidi2c.inf_amd64_aad0f43cb9f97e75\hidi2c.inf} 09:13:40.593
     idb:           Created driver package object 'hidi2c.inf_amd64_aad0f43cb9f97e75' in SYSTEM database node.
     idb:           Created driver INF file object 'hidi2c.inf' in SYSTEM database node.
     idb:           Registered driver package 'hidi2c.inf_amd64_aad0f43cb9f97e75' with 'hidi2c.inf'.
     idb:      {Register Driver Package: exit(0x00000000)} 09:13:40.593
     sto:      Driver Store Filename = D:\wd\compilerTemp\BMT.SE.kyappx5f.5lp\Starter\Windows\System32\DriverStore\FileRepository\hidi2c.inf_amd64_aad0f43cb9f97e75\hidi2c.inf
     sto: {Import Driver Package: exit(0x00000000)} 09:13:40.593

2019 (Warning that pci.inf is missing. Pci.inf is actually imported later. Probably should have been imported before other packages use it. Is it a fail?):
Code: [Select]
     sto: {Import Driver Package: d:\os\bin\amd64fre\images\staged\Server\ServerWeb\Windows\WinSxS\amd64_dual_hidi2c.inf_31bf3856ad364e35_10.0.17763.1_none_63c0341c4f3c2dab\hidi2c.inf} 00:17:16.853
     sto:      Driver Store   = d:\os\bin\amd64fre\images\staged\Server\ServerWeb\Windows\System32\DriverStore (10.0.17763)
     sto:      Driver Package = d:\os\bin\amd64fre\images\staged\Server\ServerWeb\Windows\WinSxS\amd64_dual_hidi2c.inf_31bf3856ad364e35_10.0.17763.1_none_63c0341c4f3c2dab\hidi2c.inf
     sto:      Architecture   = amd64
     sto:      Flags          = 0x00000245
     inf:      Provider       = Microsoft
     inf:      Class GUID     = {745a17a0-74d3-11d0-b6fe-00a0c90f57da}
     inf:      Driver Version = 06/21/2006,10.0.17763.1
     inf:      Version Flags  = 0x00000001
!    inf:      Could not find include INF file "pci.inf". Error = 0x00000002
     inf:      Needed section [PciD3ColdSupported] not found, might exist in missing included INF.
     inf:      {Query Configurability: d:\os\bin\amd64fre\images\staged\Server\ServerWeb\Windows\WinSxS\amd64_dual_hidi2c.inf_31bf3856ad364e35_10.0.17763.1_none_63c0341c4f3c2dab\hidi2c.inf} 00:17:16.853
     inf:           Driver package is fully isolated.
     inf:           Driver package 'hidi2c.inf' is configurable.
     inf:      {Query Configurability: exit(0x00000000)} 00:17:16.853
     sig:      Signer Score  = 0x0D000003 (Inbox)
     flq:      Hardlinking 'd:\os\bin\amd64fre\images\staged\Server\ServerWeb\Windows\WinSxS\amd64_dual_hidi2c.inf_31bf3856ad364e35_10.0.17763.1_none_63c0341c4f3c2dab\hidi2c.inf' to 'd:\os\bin\amd64fre\images\staged\Server\ServerWeb\Windows\System32\DriverStore\FileRepository\hidi2c.inf_amd64_891a4188cb4bf01b\hidi2c.inf'.
     flq:      Hardlinking 'd:\os\bin\amd64fre\images\staged\Server\ServerWeb\Windows\WinSxS\amd64_dual_hidi2c.inf_31bf3856ad364e35_10.0.17763.1_none_63c0341c4f3c2dab\hidi2c.sys' to 'd:\os\bin\amd64fre\images\staged\Server\ServerWeb\Windows\System32\DriverStore\FileRepository\hidi2c.inf_amd64_891a4188cb4bf01b\hidi2c.sys'.
     idb:      {Register Driver Package: d:\os\bin\amd64fre\images\staged\Server\ServerWeb\Windows\System32\DriverStore\FileRepository\hidi2c.inf_amd64_891a4188cb4bf01b\hidi2c.inf} 00:17:16.884
     idb:           Created driver package object 'hidi2c.inf_amd64_891a4188cb4bf01b' in SYSTEM database node.
     idb:           Created driver INF file object 'hidi2c.inf' in SYSTEM database node.
     idb:           Registered driver package 'hidi2c.inf_amd64_891a4188cb4bf01b' with 'hidi2c.inf'.
     idb:      {Register Driver Package: exit(0x00000000)} 00:17:16.884
     sto:      Driver Store Filename = d:\os\bin\amd64fre\images\staged\Server\ServerWeb\Windows\System32\DriverStore\FileRepository\hidi2c.inf_amd64_891a4188cb4bf01b\hidi2c.inf
     sto: {Import Driver Package: exit(0x00000000)} 00:17:16.884

I'm not sure what are implications of this error. But here comes more info. I loaded registry hives from install image to see how things look offline. So this is the data before installing OS. There are huge differencies in driver registration (you may also look attachments).

1. HKLM\SYSTEM\DriverDatabase\DriverInfFiles\ there is key for a hidi2c.inf on both OS, but 2019 does not have "Configurations" value.
2. HKLM\SYSTEM\CurrentConrolSet\Services\ there is no key for hidi2c service on 2019.
3. HKLM\SYSTEM\DriverDatabase\DriverPackages\ there is key for a hidi2c.inf on both OS, but 2019 does not have some important subkeys and values.
4. HKLM\SYSTEM\DriverDatabase\DeviceIds\ 2019 is missing the ID of supported devices (ACPI\PNP0C50 in this case).

So I make conclusion, that driver is imported, but not fully registered.

Also after installing OS, Win10 shows hidi2c driver in msinfo32 "System drivers", 2019 does not. The Compatible ID's of the device is mathing hidi2c.inf, but the automatic installer just ignores it. I was checking its behaviour with Process Monitor from SysInternals. I tried many things, including, but not limitted to:

1. Tried to delete and reimport the driver offline. Dism.exe does not support default driver removal.
2. Tried to install .inf online.
3. Deleted driver entries and files and tried to install .inf. Windows says it is third party driver and does not contain signature. Signature check = off - no luck either.
4. Manually added keys and values to registry - the driver apeared in msinfo32, but still does not work.

From 644 included drivers there are a few more drivers which have import warnings and incomplete registrations(?), not just this one. I looked some other released versions of Server 2019 and ALL of them are same main build date with same driver imports. What is going on? Do I understand all this correct? Is the driver import actually broken? Can I somehow force it to register / reinstall?

P.S. It is not of huge importance, but the idea of internal drivers being broken like this really surprised me.
« Last Edit: December 25, 2020, 03:04:37 am by Manul »
 

Offline PKTKS

  • Super Contributor
  • ***
  • Posts: 1766
  • Country: br
Re: Windows Server: Microsoft driver not registered properly?
« Reply #1 on: December 25, 2020, 11:09:53 am »
(..)

P.S. It is not of huge importance, but the idea of internal drivers being broken like this really surprised me.

I can not help you much on the issue. Nor should I...

And what you expected ?  surprised ?  from them?...

MS is a paid product which bottom line is to cripple user
access to the inner of driver control...

The registry is a reinforcement policy to make almost
impossible to decipher anything without a proper GUI
tool and knowledge of the cryptic keys put there.

That said the helpful part is that they just bundle a bunch
of drivers usually pre paid or contracted by version release
in which (by their EULA) they assume or take any responsibility
of the consequences support or results (security implied)

I had ditched that crappy shit bundle  decades ago when had
my paid hardware damaged by their unsupported buggy drivers

and things just got really worse ... with more and more sniffer services
using plenty CPU and I/O  resources to fill their telemetry supervisors
which mostly are DRM an license interests..

I had enough of that and dumped MS in the potty

My only useful advice in that would be ..
get rid of that junk - if possible

Last  resource is trying their willingness  to do support
on their well known pile of junk..

never saw a thing of that.. being useful

Paul
 

Offline masterdave

  • Newbie
  • Posts: 1
  • Country: cs
Re: Windows Server: Microsoft driver not registered properly?
« Reply #2 on: November 02, 2021, 06:05:00 pm »
Windows Server "forgets" to install hidi2c.sys. The INF insallation method does not work with this device.

You need to manually install the device.

Copy hidi2c.sys from installation media, boot.wim to c:\windows\system32\drivers.

Extract the relevant registry data for hidi2c service from Windows Server PE (can do this online or offline from hives).

Use PSEXEC to import registry configuration, then reboot. Your device should work fine.
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf