We do support SxS for different versions of the framework. Right now this is limited to major version numbers (of which there is only 1, v1). One of our initial investigations during kmdf v1.0 was to see what the support story for minor versions would be (and touching back on the previous mention of the CLR), what support policies would need to be in place (such as never allow vx.y to bind to vx.y+1 or always force the new minor version or something in between) by allowing it. This was reviewed by our team and a whole bunch of other teams (like the windows architecture group and some CLR guys) and it was decided that it was too complicated and the additional flexibility was not worth the cost in terms of code, complexity to implement, and complexity to administer. KISS ruled, keeping only minor version in memory for any major version has kept the code simpler over time and made it easier to focus our efforts in other areas of the code.
d
-----Original Message-----
From: xxxxx@lists.osr.com [mailto:xxxxx@lists.osr.com] On Behalf Of Tim Roberts
Sent: Monday, December 21, 2009 10:36 AM
To: Windows System Software Devs Interest List
Subject: Re: [ntdev] WDF co-installer v1.9 has dependencies on Vista OS.
David R. Cattley wrote:
Is it difficult to change the KMDF loader behavior so that adding a driver
that installs 1.11 does not require a reboot if drivers are currently
running against 1.10? In other words, an explicit ‘make before break’
upgrade? The drivers presently bound to 1.10 could remain so bound until
they unload and reload, whereby the loader stub could bind them to the later
1.11 binary.
This would require some pretty obscure magic. It is certainly possible
to replace a driver binary while the driver is loaded (unlike a
user-mode executable), but new devices will continue to use the
in-memory version until it unloads. So, your driver that needs 1.11
would link to the loaded 1.10 KMDF until reboot.
Perhaps there are implementation details
that prevent having ‘side-by-side’ implementations loaded simultaneously
(and if so, that is too bad).
Barring magic, I think that is exactly the case.
It’s a tough situation. Given the desire to allow all KMDF-based
drivers to share in the benefits of the most recent library, there just
isn’t a good solution to this problem. They could have called the
driver “wdf01005.sys” and “wdf01007.sys” and “wdf01009.sys”, but that
means a driver using 1.5 would use 1.5 forever, which is exactly the
situation they were trying to avoid. (That’s also one of the arguments
against static linking.)
I guess they could have used the separate driver names, then updated all
of the binaries at once to the newest version. That would allow the
situation you describe, but it seems a little silly.
In the end, I think the “reboot” required problem is less of an issue
than we think. When a new KMDF comes out, there is a whole spate of
“not another reboot!” complaints, but as soon as the new library gets
spread around, it’s not a problem any more.
–
Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.
NTDEV is sponsored by OSR
For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars
To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer