BUG: PC Card of Type Parallel Does Not Obtain Input/Output Resources

Support for Windows XP has ended

Microsoft ended support for Windows XP on April 8, 2014. This change has affected your software updates and security options. Learn what this means for you and how to stay protected.

This article has been archived. It is offered "as is" and will no longer be updated.
Symptoms
A driver for a PC Card with function code Parallel does not receive any resources in its IRP_MN_START_DEVICE under Windows XP. This typically causes the Plug and Play (PNP) input/output request packet (IRP) handler to fail IRP_MN_START_DEVICE. The result is that the device manager marks the device with a yellow exclamation mark and error code 10.

However, if the driver succeeds IRP_MN_START_DEVICE anyway, the device may appear in the device manager as successfully started but its associated resources are missing or incomplete.
Cause
Windows XP PCMCIA bus driver marks as invalid any configuration tuple that belongs to a device with function ID tuple (21) code 3 (Parallel) if it does not have only two I/O ports ranges, or if the configuration tuple requests any memory range.

For example, a parallel port that is implemented into a PC Card that requests common I/O ports ranges for LPT1, LPT2 or LPT3 finds all its configuration tuples marked as invalid. This causes the system to not assign any resource to the device. The driver finds that IRP_MN_START_DEVICE has an empty resource list and the driver typically fails this IRP.
Resolution
To resolve this problem, obtain the latest service pack for Windows XP. For additional information, click the following article number to view the article in theMicrosoft Knowledge Base:
322389 How to Obtain the Latest Windows XP Service Pack


To work around this behavior, override configurations that are marked invalid by means of an IOConfig directive into a LogConfig section in the device INF. After you do this, you can add a dummy I/O port range to the overridden configuration to satisfy the requirement for having only two I/O port ranges.

The following sample code is a LogConfig section for a card that required LPT1 range and has been corrected to include a dummy I/O port range at 0778-077F:
[MyDeviceInstallSection]...[MyDeviceInstallSection.LogConfigOverride]LogConfig=MyLogConfig...[MyLogConfig]ConfigPriority=NORMALIOConfig=378-37F(3ff::)IOConfig=778-77F(ffff::)				
NOTE: This example assumes that the parallel port has a 10-bit decoder, which is the worst case. For the dummy range, although a 16-bit decoder has been set, no decoder exists.
Status
Microsoft has confirmed that this is a bug in the Microsoft products that are listed at the beginning of this article. This problem was first corrected in Windows XP Service Pack 1.
More information
Following is a common example of tuples that may experience the problem. A PC Card has a function ID tuple (21h) evaluated to 3 so the device is Parallel. Among the other tuples, the function ID will be as follows:
21h TPL_CODE=CISTPL_FUNCID02h TPL_LINK03h TPLFID_FUNCTION00h 
kbBaseOS
Properties

Article ID: 313580 - Last Review: 01/12/2015 19:22:59 - Revision: 2.0

Microsoft Windows XP Professional, Microsoft Windows XP Home Edition

  • kbnosurvey kbarchive kbbug kbfix kboswin2000fix kbwinxpsp1fix KB313580
Feedback