Driver Compatibility for Windows Vista -
Driver Compatibility for Windows Vista
March 8, 2006 - ARCHIVE
Abstract
This paper provides information about backward compatibility issues that drivers that are implemented for Microsoft® Windows® XP and Microsoft Windows Server™ 2003 might encounter in the Microsoft Windows Vista™ operating system. It provides pointers to information that driver developers can use to update their drivers to work properly in Windows Vista.
This information applies for the following operating systems:
Microsoft Windows Vista
Microsoft Windows Server code named “Longhorn”
This is an early preview draft of this information. Updates to this paper are announced in the Microsoft Hardware Newsletter. The current version of this paper is maintained on the Web at:
http://www.microsoft.com/whdc/driver/WDK/DrvCompat_Vista.mspx
References and resources discussed here are listed at the end of this paper.
Contents
Introduction to Driver Compatibility for Windows Vista 3
Global Issues for Drivers 3
Global Issues for Driver Installation 4
Global Issues for Driver Loading 4
Global Issues for Driver Functionality 5
Key Global Requirements for the Windows Vista Logo 5
Audio Drivers 6
Audio Driver Run-Time Issues 6
Audio Driver Functionality Issues 6
Key Audio Driver Requirements for Windows Vista Logo 7
Display Drivers 7
Display Driver Functionality Issues 7
Key Display Driver Requirements for the Windows Vista Logo 8
Network Drivers 8
Network Driver Installation Issues 8
Network Driver Run-Time Issues 8
Network Driver Functionality Issues 8
Key Network Driver Requirements for the Windows Vista Logo 9
Print and Imaging Drivers 9
Print and Imaging Driver Loading Issues 9
Print and Imaging Driver Functionality Issues 9
Key Print and Imaging Logo Requirements 10
Storage Drivers 10
Key Storage Driver Requirements for the Windows Vista Logo 10
Streaming Media Drivers 10
Streaming Media Driver Run-Time Issues 10
Streaming Media Driver Functionality Issues 11
Resources 11
General 11
Installation 11
Audio Drivers 11
Display Drivers 12
Network Drivers 12
Print and Imaging Drivers 12
Streaming Media Drivers 12
Disclaimer
This is a preliminary document and may be changed substantially prior to final commercial release of the software described herein.
The information contained in this document represents the current view of Microsoft Corporation on the issues discussed as of the date of publication. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information presented after the date of publication.
This White Paper is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS DOCUMENT.
Complying with all applicable copyright laws is the responsibility of the user. Without limiting the rights under copyright, no part of this document may be reproduced, stored in or introduced into a retrieval system, or transmitted in any form or by any means (electronic, mechanical, photocopying, recording, or otherwise), or for any purpose, without the express written permission of Microsoft Corporation.
Microsoft may have patents, patent applications, trademarks, copyrights, or other intellectual property rights covering subject matter in this document. Except as expressly provided in any written license agreement from Microsoft, the furnishing of this document does not give you any license to these patents, trademarks, copyrights, or other intellectual property.
Unless otherwise noted, the example companies, organizations, products, domain names, e-mail addresses, logos, people, places and events depicted herein are fictitious, and no association with any real company, organization, product, domain name, email address, logo, person, place or event is intended or should be inferred.
© 2006 Microsoft Corporation. All rights reserved.
Microsoft, Windows, Windows Server, and Windows Vista are either registered trademarks or trademarks of Microsoft Corporation in the United States and/or other countries.
The names of actual companies and products mentioned herein may be the trademarks of their respective owners.
Introduction to Driver Compatibility for Windows Vista
The Microsoft® Windows Vista™ operating system introduces a number of changes that affect drivers. Drivers that were created for earlier versions of Microsoft Windows® might require updating to run correctly in Windows Vista. This white paper provides a summary of upcoming changes with Windows Vista that can potentially cause compatibility problems for older drivers. This paper will be updated as new information becomes available.
Note: Although this paper focuses on Windows Vista, the issues discussed here also apply to the Microsoft Windows Server™ code named “Longhorn” operating system.
The issues are grouped into five basic categories.
Installation: The driver might not install as it did in earlier systems. For example, the user access protection (UAP) feature may complicate finish-install actions in Windows Vista.
Loading: The driver might not load as it did in earlier systems. For example, the 64-bit version of Windows Vista does not load unsigned drivers.
Run Time: The driver might not run as it did in earlier systems. This category includes a range of issues that can occur during run time, some that are quite serious and others that are relatively minor. For example, at the serious end of the spectrum, drivers that extend or replace kernel services by hooking the system service tables cause a bug check in the 64-bit version of Windows Vista. An example of a less serious issue is that some deprecated device driver interface (DDI) routines simply return an error code in Windows Vista.
Functionality: The driver runs, but its behavior might differ significantly from earlier versions of Windows. For example, Network Driver Interface Specification (NDIS) 5.x drivers must go through a translation layer, which reduces their performance.
Logo Requirements. There have been a number of changes to what is required for a driver to receive a Windows Vista logo. This paper summarizes some of the key new or changed requirements.
Important: The Windows Vista Logo Program for Hardware defines requirements for drivers that are based on logo program that is criteria published in Windows Logo Program Requirements Suite, Version 3.0. These requirements also define the precise industry specifications for creating system and device hardware and drivers that are compatible with Windows operating systems. Some key issues related to the Windows Vista logo program are summarized in this paper; however, refer to the current logo program documentation for a definitive list of requirements.
Global Issues for Drivers
Changes in Windows Vista affect drivers for many, if not all, device classes. Generally, these changes were made to enhance security and reliability. This section discusses these global issues. The remaining sections in this paper discuss issues that are specific to a particular device class.
Global Issues for Driver Installation
All driver files that are referenced in the INF must be in the package. Driver files—except those that are part of the operating system—must be imported into the driver store before the package can be installed. All nonsystem driver files that the INF references must be in the driver package. If not, the driver files are not successfully imported into the driver store and installation fails.
Solution: Make sure that the all nonsystem driver files are present in the driver package.
Class installers and co‑installers should not display a user interface (UI). All device installs occur in the noninteractive system context. This means that class installers and co-installers cannot display a UI during the installation itself.
Solution: Class installers and co-installers should not attempt to display a UI, except as part of a finish-install action.
For more information, see the white paper titled “Device Finish-Install Actions in Windows Vista.”
Class installers and co-installers should not expect client-side installation. Earlier versions of Windows would attempt a client-side install if a system-based install returned an error code such as ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION. Windows Vista does not support client-side installs. If the class installers or co-installers return an error code such as ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION, the install fails.
Solution: Class installers and co-installers should not expect client-side installation to be available and should not return error codes such as ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION.
UAP may complicate finish-install actions. In Windows Vista, user account protection (UAP, formerly called least-privileged user account or LUA) enables users to run at low privilege most of the time; UAP elevates privilege only when necessary. If finish-install actions or finish-install pages run when anyone other than the local administrator is logged on to the system, Windows Vista prompts the user for consent and the user must supply administrator credentials. If the user does not supply consent and credentials, the finish-install actions do not run and the next user who logs on is prompted for consent and credentials.
Solution: Drivers that use finish-install actions should fail gracefully if the user does not provide the consent or the required credentials.
For more information, see the white paper titled “Device Finish-Install Actions in Windows Vista.”
Global Issues for Driver Loading
Digital signatures are required for 64-bit kernel-mode drivers. Signed catalog (.cat) files are required for all kernel-mode packages that are to be installed on the 64-bit editions of Windows Vista. This applies to any software module that loads in kernel mode, including device drivers, filter drivers, and kernel services. The operating system does not load unsigned kernel modules that lack a signed catalog file.
There are two ways to obtain an appropriately signed catalog file:
Obtain a Windows Vista logo. Drivers that pass Windows Hardware Quality Lab (WHQL) testing receive a catalog file that is signed with the WHQL certificate.
Obtain a publisher identity certificate (PIC) and use the PIC to sign the package’s catalog file. To obtain a PIC, a publisher must first obtain a VeriSign Class 3 Commercial Software Publisher Certificate and then use that certificate to obtain a PIC from Microsoft that can be used to sign kernel-mode modules intended for 64-bit Windows Vista.
For boot drivers, hardware manufacturers must also use a PIC to embed a signature in the driver binaries. This requirement applies to CD-ROM and disk drivers, ATA/ATAPI controllers, mouse and other pointing devices, SCSI and RAID controllers, and system devices.
Solution: Sign all catalog files for 64-bit drivers by using a PIC or get a WHQL-signed catalog file by obtaining a Windows Vista logo. Sign boot driver binaries by using a PIC.
For more information, see the white paper titled “Digital Signatures for Kernel Modules on x64-based Systems Running Windows Vista.”
Global Issues for Driver Functionality
Session 0 changes can prevent UI from appearing. In earlier versions of Windows, both services and applications could run in Session 0. Windows Vista isolates services in Session 0 and runs applications in other sessions. This action protects services from attacks that originate in application code, but processes that run in Session 0 have some limitations. The most notable is that they cannot access the display driver. This can prevent user-mode drivers that run as services—primarily print and imaging drivers—from displaying a UI.
Solution: User-mode drivers that run as services and display a UI must be rewritten so that their UI runs in Session 1 or higher.
For more information, see the white papers titled “Impact of Session 0 Isolation on Services and Drivers in Windows Vista” and “AsyncUI Notifications.”
Registry reflection changes can restrict keys from being changed by reflection. The 64-bit version of Windows Vista introduces the concept of ownership for a specific registry key. An installer that creates a registry key can assert ownership of that registry key. When ownership has been asserted for a registry key in one view, only changes made by the owner of that key are reflected in the registry. The key cannot be changed by reflection of changes made in the other registry view. In addition, certain registry keys are owned by the operating system and might not be accessible or modifiable.
Solution: 64-bit drivers that depend on the registry reflection behavior of earlier 64-bit versions of Windows might need to be updated to accommodate ownership of registry keys.
For more information, see the white paper titled “Registry Reflection in Windows.”
Key Global Requirements for the Windows Vista Logo
For complete and definitive details about global requirements for the Windows Vista logo program, see the Windows Vista logo program documentation.
The following list summarizes some key global requirements:
Logo-qualified device drivers must be digitally signed by Microsoft. This includes inbox drivers, WHQL-signed drivers, and Driver Reliability Signature (DRS) program signatures.
Drivers must follow I/O completion/cancellation guidelines. For details, see the white paper titled “I/O Completion/Cancellation Guidelines.”
Software-first installation processes must use the Plug and Play API.
Drivers must pass Driver Verifier, PREfast, and Static Driver Verifier (SDV) to ensure stability and prevent memory leaks. For details, see the Windows Driver Kit (WDK).
Drivers must complete their power management I/O request packet (IRP) rapidly enough to allow the system to resume from the S3 power state in less than 2 seconds.
Device drivers must have a properly formatted INF for their device class. For details, see the WDK documentation for the particular device class.
Vendor-supplied drivers or software must not replace or bypass system components.
Devices must have drivers for both 32-bit and 64-bit versions of Windows Vista.
Audio Drivers
The issues listed in this section describe potential compatibility issues for audio drivers in Windows Vista.
Audio Driver Run-Time Issues
HDAUDIO_BUS_INTERFACE_BDL is not supported. Windows Vista does not support the HDAUDIO_BUS_INTERFACE_BDL version of the DDI. Drivers that use this DDI version fail.
Solution: Windows Vista drivers should use the HDAUDIO_BUS_INTERFACE version of the DDI. This version can also be installed on earlier versions of Windows.
For more information, see the white paper titled “Output Content Protection and Windows Longhorn." In the WDK documentation, see “High Definition Audio DDI” and “Differences between the Two DDI Versions.”
Audio Driver Functionality Issues
Drivers must have the correct content-protection signing attribute to handle some premium content. Microsoft Windows XP audio drivers work in Windows Vista, but cannot handle certain types of premium content if they do not have the correct content-protection signing attribute. If the content requires this attribute, the new protected user-mode audio (PUMA) engine enforces the requirement.
Solution: At a minimum, for Windows to authenticate the driver, it must be signed and have the required content-protection signing attribute. Note that content-protection signing is in addition to standard driver signing.
For more information, see the white paper titled “Output Content Protection and Windows Longhorn.”
Key Audio Driver Requirements for Windows Vista Logo
For complete and definitive details about the audio-related Windows Vista logo program requirements, see “Audio Devices” in the Windows Vista logo program documentation.
The following list summarizes some key requirements for audio drivers:
Implement Universal Audio Architecture (UAA)-compliant audio devices.
Implement audio drivers as WaveRT miniport drivers.
Implement up-to-date digital rights management (DRM) support.
Display Drivers
The issues listed in this section describe potential compatibility issues for Windows XP display drivers in Windows Vista.
Note: Windows XP display drivers are based on the Windows 2000 display driver model, which is still supported in Windows Vista. This allows older drivers to function as they did in earlier versions of Windows. However, to take advantage of the new capabilities of Windows Vista, display drivers must be substantially rewritten to conform to the new Windows Vista display driver model. For more information, see the WDK documentation, “Introduction to the Windows Longhorn Display Driver Model.”
Display Driver Functionality Issues
Drivers cannot fully support Windows Vista graphics. For example, display drivers that are based on the Windows 2000 display driver model cannot handle premium content such as HD-DVD video and cannot support the Aero Glass user interface.
Solution: To support the full graphics capabilities of Windows Vista, display drivers must be rewritten to conform to the Windows Vista display driver model (WDDM, previously known as “LDDM”).
For more information, see the white papers titled “Advances in Display and Composition Architecture for Windows” and “Output Content Protection and Windows Longhorn.”
VideoPortInt10 is deprecated. If a display driver calls VideoPortInt10, it can run only under the Windows 2000 display driver model. It cannot run under the Windows Vista display driver model.
Solution: Rewrite the driver to run under the Windows Vista display driver model.
For more information, see the white paper titled “BIOS Communication for Display Drivers in Windows Vista” and the WDK, “Introduction to the Windows Longhorn Display Driver Model.”
Key Display Driver Requirements for the Windows Vista Logo
For complete and definitive details about the display-related logo program requirements, see “Display and Graphics Devices” in the Windows Vista logo program documentation. To summarize a key recommendation:
To meet the basic logo requirements, display drivers must be based on the Windows Vista display driver model. Drivers that are based on the Windows 2000 display driver model run in Windows Vista, but cannot qualify for a logo.
Network Drivers
The issues listed in this section describe potential compatibility issues for Windows XP network drivers in Windows Vista.
Note: Windows Vista networking is based on the NDIS version 6.0. NDIS 3.0 - 5.x miniport drivers and NDIS 4.0 - NDIS5.x protocol and intermediate drivers still run in Windows Vista, with some limitations. However, they must go through a translation layer and cannot take advantage of the new features of NDIS 6.0. All NDIS upper filter drivers, such as firewalls, should have no compatibility problems.
Network Driver Installation Issues
*IFType, *MediaType, and *PhysicalMediaType must be correctly specified in the NDI section of an NDIS 6.0 INF. If these settings are not correctly specified, the driver will not install in Windows Vista.
Solution. Specify the settings in the INF. For more information, see the sample network INF in the WDK.
Network Driver Run-Time Issues
Some routines from NDIS 5.0 and earlier have been removed completely and fail if they are called. The details depend on the particular routine. For more information, see the NDIS reference in the WDK. The affected routines have notes on their WDK reference pages that indicate that they are not present in Windows Vista. The reference page also provides details about what happens if a driver attempts to call that routine and how to update drivers to work properly with Windows Vista.
Solution: Update drivers so that they do not use these routines.
NDIS 6.0 enforces header versioning. The WDK introduces the concept of header versioning, which requires that a driver call the API that is associated with the correct version of its miniport. Otherwise, the driver will not compile. For example, an NDIS 6.0 driver that calls an API that is designed for NDIS 5.1 fails during compilation. If a driver is loaded that calls a deprecated API, it may cause the system to behave incorrectly.
Solution. Make sure that drivers call the correct API version. Check for incorrect routine calls by compiling the driver with the current WDK build tools. Incorrect calls generate a compiler error.
Network Driver Functionality Issues
NDIS 5.x and earlier drivers must go through a translation layer. Windows Vista supports NDIS 6.0. NDIS 5.x and earlier drivers run in Windows Vista, but they do so by translation to NDIS 6.0. The translation layer can significantly reduce driver performance.
Solution: To avoid the translation penalty, port NDIS 5.x drivers to NDIS 6.0.
For more information, see the white paper titled "Porting Miniport Drivers to NDIS 6.0.” In the WDK documentation, see also “Introduction to NDIS 6.0” and “Porting NDIS 5.x Drivers to NDIS 6.0.”
NDIS 4.0 and 5.x intermediate filter drivers install and run in Windows Vista, but they are deprecated.
Solution: Rewrite intermediate filter drivers as NDIS 6.0 filter drivers.
For more information, see the WDK documentation, “NDIS 6.0 Filter Drivers.”
Key Network Driver Requirements for the Windows Vista Logo
For complete and definitive details about the network-related logo program requirements, see “Network Devices” in the Windows Vista logo program documentation.
The following list summarizes some key requirements for network drivers:
Ethernet drivers must make only NDIS or Windows Driver Foundation (WDF) calls. Previously, this requirement was “NDIS or Windows Driver Model (WDM) calls”. Other kernel-mode calls are not permitted.
Gigabit or above Ethernet device drivers must be implemented as NDIS 6.0 miniport drivers.
10/100 Ethernet device drivers must be implemented as NDIS 5.0 or above miniport drivers.
Wireless local area network (LAN) device drivers must be implemented by using the Native Wi‑Fi driver model.
Print and Imaging Drivers
The issues listed in this section describe potential compatibility issues for print and imaging drivers in Windows Vista.
Print and Imaging Driver Loading Issues
Kernel-mode printer drivers will not load. Windows Vista will not load kernel-mode printer drivers. Printers must have a user-mode driver.
Solution: Rewrite printer drivers to run in user mode.
For more information, see the white paper titled “Advances in Windows Printing.”
Print and Imaging Driver Functionality Issues
Services that are associated with printer drivers cannot display a UI in Session 0. In Windows Vista, services that are associated with printer drivers are loaded by the spooler service in Session 0. They are isolated from user processes, which run in Session 1 and higher. In particular, processes that run in Session 0 do not have access to the graphics adapter. This means that any user interface that is created to run in the same session is not visible to users.
Solution: Rewrite the service to display the UI in the user’s session. AsyncUI provides a mechanism for printer drivers, port monitors, print processors, and other components in the printing pipeline to send notifications to and create a user interface in the Windows Explorer process in the user's session.
For more information, see the white papers titled “AsyncUI Notifications” and “Impact of Session 0 Isolation on Services and Drivers in Windows Vista.”
Key Print and Imaging Logo Requirements
For complete and definitive details about the print and imaging logo program requirements, see “Printers” and “Still Image Devices” in the Windows Vista logo program documentation.
The following list summarizes some key requirements for print and imaging drivers:
Printer drivers must support the XPSDrv architecture.
Print monitors must implement the InitializePrintMonitor2 interface and use only that interface to communicate with the registry.
Storage Drivers
The issues listed in this section describe potential compatibility issues for storage drivers in Windows Vista.
Key Storage Driver Requirements for the Windows Vista Logo
For complete and definitive details about the network-related logo program requirements, see “Storage” in the Windows Vista logo program documentation.
The following list summarizes some key requirements for storage drivers:
Storage devices must use a co-installer for registry settings. Devices that depend on registry modifications other than those made automatically by the device class co-installer cannot obtain a logo.
Storage drivers must be miniport drivers.
Storage devices that depend on filter drivers cannot obtain a logo.
To be eligible for driver signing under the Windows Vista logo program, Fibre Channel, Internet small computer system interface (iSCSI), and serial attached storage (SAS) must be Storport minidrivers. Serial ATA (SATA), SATA RAID, SCSI, and SCSI RAID can be either Storport or SCSI minidrivers.
Streaming Media Drivers
The issues listed in this section describe potential compatibility issues for streaming media drivers in Windows Vista.
Streaming Media Driver Run-Time Issues
Video port extensions are disabled. Video port extensions (VPEs) are disabled in Windows Vista if the display driver uses the Windows Vista driver display model.
Solution: Rewrite the streaming driver so that it does not depend on VPEs.
For more information, see the WDK documentation, “Video Port Capture Device.”
Streaming Media Driver Functionality Issues
Drivers cannot handle protected content. Drivers must handle protected video path-output protection management (PVP-OPM) commands to stream protected content.
Solution: Rewrite the driver to handle PVP-OPM commands. PVP-OPM is the successor to the certified output protection protocol (COPP) that was provided in Windows XP. Where appropriate, PVP-OPM uses the same interfaces as COPP, but there are significant differences in the way that COPP and PVP‑OPM work.
For more information, see the white paper titled “Output Content Protection and Windows Longhorn.”
Resources
Updates to this paper are announced in the Microsoft Hardware Newsletter. Subscribe to this newsletter on the WHDC Web site at
http://www.microsoft.com/whdc/newsreq.mspx
The following references provide more information on the issues discussed in this document.
General
AsyncUI Notifications
http://www.microsoft.com/whdc/
Developer Best Practices and Guidelines for Applications in a Least Privileged Environment
http://msdn.microsoft.com/windowsvista/default.aspx?pull=/library/en-us/dnlong/html/AccProtVista.asp
Digital Signatures for Kernel Modules on x64-based Systems Running Windows Vista
http://www.microsoft.com/whdc/system/platform/64bit/kmsigning.mspx
I/O Completion/Cancellation Guidelines
http://www.microsoft.com/whdc/driver/kernel/Iocancel.mspx
Impact of Session 0 Isolation on Services and Drivers in Windows Vista
http://www.microsoft.com/whdc/system/vista/services.mspx
Registry Reflection in Windows
http://www.microsoft.com/whdc/system/platform/64bit/RegReflect.mspx
Windows Vista Logo Program
http://www.microsoft.com/whdc/winlogo/LH_logo.mspx
Installation
Device Finish-Install Actions in Windows Vista
http://www.microsoft.com/whdc/driver/install/Finish_Install.mspx
Audio Drivers
Differences between the Two DDI Versions [WDK]
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/Audio_d/hh/Audio_d/aud-design_5acf9f0d-8836-4763-9207-b4db2ab54dfb.xml.asp
High Definition Audio DDI [WDK]
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/Audio_d/hh/Audio_d/aud-design_89dbd6cf-8147-4675-bcd2-d259b2beaaf6.xml.asp
Output Content Protection and Windows Longhorn
http://www.microsoft.com/whdc/device/stream/output_protect.mspx
Display Drivers
Advances in Display and Composition Architecture for Windows
http://www.microsoft.com/whdc/driver/wdk/default.mspx
BIOS Communication for Display Drivers in Windows Vista
http://www.microsoft.com/whdc/system/platform/firmware/lddm_bios.mspx
Introduction to the Windows Longhorn Display Driver Model [WDK]
http://msdn.microsoft.com/library/en-us/Display_d/hh/Display_d/DisplayDriverModel_Guide_36da9e1a-2bf8-4336-b213-3bf5b703ef18.xml.asp
Network Drivers
Introduction to NDIS 6.0 [WDK]
http://msdn.microsoft.com/library/en-us/NetLH_d/hh/NetLH_d/ndis6_intro_098db7fd-5fc3-4549-b5ad-320f089fd3a8.xml.asp
NDIS 6.0 Filter Drivers [WDK]
http://msdn.microsoft.com/library/en-us/NetLH_d/hh/NetLH_d/ndis6_filter_1d62ef65-9715-4e55-a894-3a4e92b619a2.xml.asp
Porting Miniport Drivers to NDIS 6.0
http://www.microsoft.com/whdc/device/network/NDIS/NDIS6drvport.mspx
Porting NDIS 5.x Drivers to NDIS 6.0 [WDK]
http://msdn.microsoft.com/library/en-us/NetLH_d/hh/NetLH_d/ndis6_porting_94e325ba-4bb0-4b7d-9a8a-959bfabcb8d6.xml.asp
Print and Imaging Drivers
Advances in Windows Printing
http://www.microsoft.com/whdc/driver/WDK/default.mspx
Streaming Media Drivers
Video Port Capture Device [WDK]
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/Stream_d/hh/Stream_d/vidcapds_9470c338-7c01-4104-b5c7-17c889ac9cd3.xml.asp
March 8, 2006 - ARCHIVE
© 2006 Microsoft Corporation. All rights reserved.
|