The Nauseating Truth About Services That Windows Must Provide


What are the two services that windows must provide for an expresscard?

The two services that windows must provide for an expresscard are:

1. Windows must provide a driver for the expresscard controller to control the card.

2. Windows must provide an API that enables applications to access and control a card, as well as query its capabilities and status, where applicable.

What is the benefit of windows not providing a service?

The one benefit of windows not providing a service is that it allows users to swap out drivers in order to support devices that the current drivers may not work with. The two benefits of windows providing a service are:


1. A single point of failure for the driver is avoided when multiple drivers are required for support multiple devices. Each driver can be updated independently, so that when a bug fix or security patch is delivered to one driver, it will not have to be installed on all other drivers as well.

2. When an application uses the expresscard APIs directly, it gets direct control over the card and what it can do with that card. This eliminates incompatibilities and limitations with some applications, and enables new functionality which may not have been possible using only system-provided APIs.

Does the expresscard have a service?

Yes, the expresscard has a service. It is called the “expresscard service” and is responsible for providing drivers for any peripheral devices attached to an expresscard controller, as well as querying the capabilities of such devices. The expresscard service also enables applications to access and control such devices directly using its APIs. All expresscards must provide this service or they will not be certified as compatible with Windows. However, it is up to each vendor of an expresscard whether or not they use the provided system-provided driver, or whether they choose to write their own custom driver for their cards. The expresscard service is fully embedded in the Windows 2000 kernel, and it runs at low priority (20), which means that it cannot be terminated by the system with a task manager operation. All the driver code is located in a shared object library called GDRIVER.DLL, which gets loaded into memory just before Windows starts up. The NT kernel code will load this library as soon as Windows starts up, and then notify the application of its existence using an API call that lets applications retrieve this information.

What options are there regarding how to interface to the card?

There are three options regarding how applications can interface to a card:

1. The application can use the system-provided APIs, which are located in the “expcard.h” header file. These APIs provide a standard interface to any supported device, and eliminate the risk of one driver not playing nicely with another.

2. The application can use its own custom drivers for devices that are supported by expresscards. This eliminates the risk of incompatibility with a third party driver and would allow new functionality not available using only standard drivers that may be written by Microsoft.

3. The application can bypass drivers altogether and access an expresscard directly using its custom APIs (if any) or otherwise without any support from Windows whatsoever.”

Are there any drawbacks?

Any drawbacks to using drivers or using the APIs are not important, as it is up to each vendor of an expresscard whether or not they use the provided system-provided driver, or whether they choose to write their own custom driver for their card. Having said that, there are a couple things you should know. First and foremost, you must use the driver provided by Microsoft in order for the card to work fully with Windows 2000. Secondly, you are responsible for supporting your cards on Windows 2000. 

In other words, if your device fails on Windows NT 4.0 it has failed [and cannot be fixed] and can no longer be used on a later version of operating system (i.e. Windows 2000). Third, when you install your expresscard on Windows NT 4.0, the driver provided by Microsoft will automatically be installed via the Plug and Play service. Your custom drivers will not be installed until the next time you boot up and the Plug and Play driver installation occurs. Finally, you cannot use both Microsoft’s driver and your custom-written driver at the same time in Windows 2000. You must decide whether or not to use Microsoft’s drivers or use either your own custom drivers or no drivers at all, and build your device accordingly.

Some more facts:

Microsoft will ship the driver with Windows 2000, but will only support it on Windows 2000. 

All drivers that are provided by Microsoft are located in the \Windows\System folder. Drivers that you write yourself should be copied to the \Windows\System32 folder. An expresscard is for devices that connect to a PC via an external USB port. You can only have one expresscard enabled at a time using drivers from Microsoft, and you can have multiple cards installed if you choose to have custom drivers for your cards. There are no plans for making any changes to this service for Windows XP or future versions of Windows.


Please enter your comment!
Please enter your name here