BUG: UMPD Doesn't Work on Windows NT Terminal Server 4.0 Client (241171)



The information in this article applies to:

  • Microsoft Windows NT Server 4.0
  • Microsoft Windows NT Workstation 4.0
  • Microsoft Windows NT 4.0 Driver Development Kit (DDK)

This article was previously published under Q241171

SYMPTOMS

In Microsoft Windows NT 4.0 the User Mode Printer Driver (UMPD) is hooked in the Spoolsv.exe. It intercepts the printer data streams and uses Spoolss.dll directly to print the data.

CAUSE

The Terminal Server remote session maps the Win32k.sys and printer device driver into its own SESSION space. The threads that run inside of the spool subsystem can only read the requests from printer drivers running on the console. To solve this problem, the spooler code is duplicated and placed inside Winsrv.dll (in Windows 2000). The Umpd.dll hook functions are handled in the Terminal Server spooler which interfaces to the Winspool.drv. The problem was that the Umpd.dll that is expected to use Spoolss.dll printer calls was given a Winspool.drv handle from the Terminal Server Spooler.

The hotfix includes new hooks for the UMPD which eliminate the above problem.

RESOLUTION

Obtain the hotfix #3749 for Winsrv.dll. This has been merged in Service Pack 5 for Terminal Server Edition 4.0.

STATUS

Microsoft has confirmed that this is a bug in the Microsoft products that are listed at the beginning of this article.

MORE INFORMATION

Steps to Reproduce Behavior

  1. Build the User Mode Printer Driver (Umpd.dll) sample from the Microsoft Windows NT 4.0 DDK.
  2. Under an administrative account install a printer driver through the Add Printer wizard, from the Terminal Server console.
  3. Move the Umpd.dll driver into the %system32\spool\drivers\w32x86\2 directory.
  4. From regedit, add the following registry key value to register the UMPD.
    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Print\Printers\ABC Printer\PrinterDriverData - SPLUserModePrinterDriver = "umpd.dl
  5. Print to a file using the printer you already installed through any application from a Terminal Server client.
  6. Observe the failure to print.

Modification Type:MinorLast Reviewed:7/27/2004
Keywords:kbbug kbprint KB241171 kbAudDeveloper