PRINTER_INFO_4 structure

The PRINTER_INFO_4 structure specifies general printer information.

The structure can be used to retrieve minimal printer information on a call to EnumPrinters. Such a call is a fast and easy way to retrieve the names and attributes of all locally installed printers on a system and all remote printer connections that a user has established.


typedef struct _PRINTER_INFO_4 {
  LPTSTR pPrinterName;
  LPTSTR pServerName;
  DWORD  Attributes;



Pointer to a null-terminated string that specifies the name of the printer (local or remote).


Pointer to a null-terminated string that is the name of the server.


Specifies information about the returned data.

Value Meaning
PRINTER_ATTRIBUTE_LOCAL The printer is a local printer.
PRINTER_ATTRIBUTE_NETWORK The printer is a remote printer.


The PRINTER_INFO_4 structure provides an easy and extremely fast way to retrieve the names of the printers installed on a local machine, as well as the remote connections that a user has established. When EnumPrinters is called with a PRINTER_INFO_4 data structure, that function queries the registry for the specified information, then returns immediately. This differs from the behavior of EnumPrinters when called with other levels of PRINTER_INFO_xxx data structures. In particular, when EnumPrinters is called with a level 2 (PRINTER_INFO_2 ) data structure, it performs an OpenPrinter call on each remote connection. If a remote connection is down, if the remote server no longer exists, or if the remote printer no longer exists, the function must wait for RPC to time out and consequently fail the OpenPrinter call. This can take a while. Passing a PRINTER_INFO_4 structure lets an application retrieve a bare minimum of required information; if more detailed information is desired, a subsequent EnumPrinter level 2 call can be made.

Attributes can also contain values that are defined in the Attributes field of PRINTER_INFO_2.

Some printer configurations, such as printer connections to some non-Windows-based print servers, might return both PRINTER_ATTRIBUTE_LOCAL and PRINTER_ATTRIBUTE_NETWORK.


Minimum supported client
Windows 2000 Professional [desktop apps only]
Minimum supported server
Windows 2000 Server [desktop apps only]
Winspool.h (include Windows.h)
Unicode and ANSI names

See also


Print Spooler API Structures