Microsoft KB Archive/153101

= EnumPrinters Fails When Enumerating Connected Printers =

Article ID: 153101

Article Last Modified on 11/1/2006

-

APPLIES TO


 * Microsoft Windows NT Workstation 3.5
 * Microsoft Windows NT Workstation 3.51
 * Microsoft Windows NT Workstation 4.0 Developer Edition
 * Microsoft Windows NT Server 3.5
 * Microsoft Windows NT Server 3.51
 * Microsoft Windows NT Server 4.0 Standard Edition

-



This article was previously published under Q153101





SYMPTOMS
When a service, or an application running in the context of a service (for example, started by the scheduler service), calls EnumPrinters with the PRINTER_ENUM_CONNECTIONS flag to get printer connections to a Windows NT Server, the API might fail with error code 122 (ERROR_INSUFFICIENT_BUFFER) even if you have specified plenty of buffer space. It will return an arbitrary size of memory needed in pcbNeeded.

An example of this behavior is starting Print Manager using the scheduler service. Since Print Manager will call this API multiple times to find how much memory it needs, it can end up in multiple scenarios (depending on the value of pcbNeeded):


 * An out of memory dialog box appears and then Print Manager displays a dialog box stating that it could not get printer information.
 * Print Manager causes an Access Violation.
 * SPOOLSS (Spooler Services) causes an Access Violation.



CAUSE
To look up the printer connections, the Spooler Service, which implements this API on Windows NT, tries to access the registry of the calling user by accessing its current user hive. However, a service does not have such a hive because it is created by WinLogon and services are logged in by Service Control Manager.

The EnumPrinter API did not handle the absence of the current user hive correctly.



STATUS
Microsoft has confirmed this to be a problem in the Microsoft products listed at the beginning of this article.

The problem will be fixed in Windows NT 4.0. The API will not return connected printers if it cannot access the current user hive.

Additional query words: 3.5 3.51 prodnt kbbug3.5 kbbug3.51

Keywords: KB153101

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.