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



The information in this article applies to:

  • Microsoft Windows XP Professional
  • Microsoft Windows XP Home Edition

This article was previously published under Q313580

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 the Microsoft 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=NORMAL
IOConfig=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_FUNCID
02h TPL_LINK
03h TPLFID_FUNCTION
00h 

Modification Type:MinorLast Reviewed:7/22/2004
Keywords:kbbug kbfix kbOSWin2000fix kbWinXPsp1fix KB313580