Driver upgrades use HardwareIDs (or CompatibleIDs) to match the child INF DDInstall
section (stored as matching device id), but use the DeviceID to generate the device
instance path. By keeping the device instance path the same over upgrades, the network
stack should identify this as an upgrade, rather than 'replacement hardware', and
not generate a new network connection, which would require network settings to be
copied from the existing network connection to the new network connection.
Note: Adds a strict requirement on child INF DDInstall sections, to specify the full
hardware ID (including revision) to guarantee interface versions are correctly supported
Signed-off-by: Owen Smith <owen.smith@cloud.com>
break;
case BusQueryDeviceID: {
- ULONG Index;
- PXENBUS_PDO_REVISION Revision;
-
Type = REG_SZ;
- Index = ARRAYSIZE(PdoRevision) - 1;
- Revision = &PdoRevision[Index];
status = RtlStringCbPrintfW(Buffer,
Id.MaximumLength,
- L"XENBUS\\VEN_%hs&DEV_%hs&REV_%08X",
+ L"XENBUS\\VEN_%hs&DEV_%hs",
__PdoGetVendorName(Pdo),
- __PdoGetName(Pdo),
- Revision->Number);
+ __PdoGetName(Pdo));
ASSERT(NT_SUCCESS(status));
Buffer += wcslen(Buffer);