Slobodan,
Yes, it does. I was probably doing something worg before and it did not populate the CriticalDeviceDatabase entry for me.
Now I just played with a Gendisk and noticed the difference.
Sorry for my ignorance and annoyance on the topic. It is just not descriptive info about the CriticalDeviceDatabase on MSDN.
It was unclear to me where TD processes the cmiIsCriticalDevice. I couldn't find the processing code. Now I did. For those who are
interested, here is the description:
Each PnPID resource contributes to the critical device database if cmiIsCriticalDevice is set (meaning loaded at boot time). If
this is the
case, the following happens:
1. REG_SZ value HKLM\...\CriticalDeviceDatabase\<PnPID>\ClassGUID created
2. REG_SZ value HKLM\...\CriticalDeviceDatabase\<PnPID>\Service created
3. REG_MULTI_SZ value HKLM\...\CriticalDeviceDatabase\<PnPID>\UpperFilter created
4. REG_MULTI_SZ value HKLM\...\CriticalDeviceDatabase\<PnPID>\LowerFilter created
<PnPID> is edited from the PnPID property, replacing "\" with "#" to make it legal as a registry key. The case of the name is also
changed to match usage, though comparisons are case insensitive.
The build code also handles the case where multiple components express the same PnPID. In this case it uses IsCompatibleID to
tie-break. The non-compatible PnPID wins, since it is considered the "primary" ID. It uses a dictionary to track the current
compatibility flag for each built PnPID.
Thanks again,
Konstantin