Geoff Chappell - Software Analyst
INTRODUCTION IN OCCASIONAL PROGRESS: There always seem to be more interesting things to do than write introductions.
Microsoft’s terms for licensing Windows have for many years, if not always, restricted the use that Windows will make of a computer’s resources. This hasn’t gone completely unnoticed, but neither has it been much concern. The limits on such things as the number of simultaneous network connections are high enough not to matter much in practice for computers used at home or even in small businesses. However, in these days when even home users are encouraged to regard 1GB of RAM as minimal and might easily think to spend on several gigabytes, how well are they warned that 32-bit editions of Windows Vista are licensed only for 4GB?
On that particular point, though Microsoft does document the 4GB limit, there seems to be no clear statement that this is a license restriction, as opposed to being a technical constraint that is impossible to surmount or at least too difficult for the price. The license terms, presented as an agreement, do not trouble even to mention the word memory. Conversely, Microsoft’s page about Memory Limits for Windows Releases doesn’t mention licensing.
The fun and games aren’t just with omissions, either. The License Agreement for the Home editions of Windows Vista states plainly that the software may be used “on up to two processors on” the licensed “device at one time”, yet the software itself is configured to regard a second physical processor as unlicensed.
Perhaps we should all just count ourselves fortunate to have this problem of luxury. Even a decade ago, multiple processors with 4GB of RAM would have seemed outrageous as a machine to park on a home desktop for playing games. Indeed, it would have been extravagant even for many serious purposes of accounting, mathematics or engineering. If Microsoft takes its time to get round to updating some limits that were set long ago, who’s to grumble?
One thing that Microsoft doesn’t seem to have trouble finding time for is writing new code to support its notions of software licensing. For Windows Vista, Microsoft has introduced a formal scheme of named license values through which Microsoft specifies how much Windows will do for the licensee. Where earlier versions of Windows might decide a behaviour by choosing from hard-coded parameters for the different product suites, Windows Vista reads the license value for that specific behaviour. For example:
Like most configuration data, the license values are stored in the registry. The whole set of them is stored as the binary data for one registry value. Individually, the license values are read through the API functions NtQueryLicenseValue (user-mode) and ZwQueryLicenseValue (kernel-mode). Several more functions are exported in kernel mode both to fetch or update the whole set and to manage a tamper state. Unlike most configuration data, the license values are protected from being tampered with.