BUG: Swenum.sys PortCls devices do not work correctly in Microsoft Windows 98 Second Edition (321467)



The information in this article applies to:

  • Microsoft Windows 98 Second Edition
  • Microsoft Windows 98 Driver Development Kit (DDK)

This article was previously published under Q321467

SYMPTOMS

When you install certain multimedia devices that use the Swenum.sys driver as their bus driver and as their enumerator, the multimedia devices may not start or may not operate correctly. The following problems may occur:
  • The device may not appear in Multimedia Control Panel.
  • The problem may occur if you right-click the .inf device information file, and then you click Install.
This problem does not occur if you use Add Hardware in Control Panel to install the device.

CAUSE

The problems may occur because of the different ways that you can perform the installation. You can perform the installation in the following ways:
  • If you right-click the .inf device information file, and then you click Install, the Swenum.sys driver is used as the bus driver and as the enumerator.
  • If you use Add Hardware in Control Panel, the device becomes a root-enumerated device, and the Swenum.sys driver is not used as the enumerator.
A race condition exists between the Portcls.sys port class system driver and the Swenum.sys driver. That is why the problem occurs.

The Portcls.sys port class system driver receives the IRP_MN_START_DEVICE request and then synchronously sends the IRP_MN_START_DEVICE request to the Swenum.sys driver. The START IRP request must return before the Portcls.sys port class system driver marks the device as "started." When the Swenum.sys driver receives the IRP_MN_START_DEVICE request, the Swenum.sys driver finishes any pending I/O. This causes the Portcls.sys port class system driver to receive at least one IRP_MJ_CREATE IRP request. On receipt of the IRP_MJ_CREATE IRP request, the Portcls.sys port class system driver determines that the device is not yet started because the START IRP request has not yet completed. Therefore, the IRP_MJ_CREATE request fails.

RESOLUTION

There is no known workaround.

STATUS

Microsoft has confirmed that this is a bug in the Microsoft products that are listed in the "Applies to" section.

Modification Type:MinorLast Reviewed:9/27/2005
Keywords:kbHotfixServer kbQFE kbtshoot kbDDK kbbug KB321467 kbAudDeveloper