Hello everyone,
It seems like I’ve found an issue with DifxApp related to assigning Tags for Groups. At particular cases DifxApp makes the msiexec.exe to hung.
To make long story short. I am using msi + difxapp to install my driver (mydriver). Recently some customer complained that they can’t install my driver becase MSI hungs, and the driver registry key (HKLM/CurrentControlSet/Services/mydriver - contains no values (no ImagePath, no Tag, no Group, etc).
Short info: I need to assign my driver in PNP_TDI group to load before netbt.sys. I use latest difxapp from WDK 7. I run Windows 7 x32.
I started to research on this, and I noticed that PNP_TDI group contains a huge amount of Tags on that machine while there are only a few drivers referring to it. For example, number of drivers registered in PNP_TDI: 5, but the number of Tags in group is 16.
I decided to play around this and I wrote a tool which fills PNP_TDI with fake values and then run msiexec and see if it hungs. At some point, I was able to reproduce the problem and I attached with OllyDbg to hunging msiexec.exe process.
After I attached I picked up the most time consuming thread and analyzed the stack. The thread was spining somewhere near place when accessing registry for mydriver/Tag.
I assume that difxapp was enumerating all drivers which belong to PNP_TDI and was searching for a “free Tag” to assign to mine driver. But because my PNP_TDI was full of fake values (I am able to repro the problem with 16 Tags) it went crazy.
I exported my registry settings for PNP_TDI and so now I can reproduce the problem on any Windows 7 machine. I install fresh Windows 7, import my PNP_TDI tags, I fire my MSI and it hungs in DifxApp code ![]()
If I clean PNP_TDI, i.e. all irreleval tags it works :). Does anyone encounter such problem?
The most funny thing is that I have no error entries in installation log (I run msiexec with /l*v). Is there any way to enable extra debug logs for difxapp?
Thanks.