winspool.h

PRINTER_INFO_4

Definición

typedef struct _PRINTER_INFO_4 { // pri4  
    LPTSTR  pPrinterName; 
    LPTSTR  pServerName; 
    DWORD  Attributes; 
} PRINTER_INFO_4; 

La estructura PRINTER_INFO_4 especifica información general sobre una impresora.

La estructura se puede usar para recuperar una información mínima sobre impresoras en una llamada a EnumPrinters. Esta llamada es una manera rápida y fácil de recuperar los nombres y atributos de todas las impresoras instaladas localmente en un sistema y de todas las conexiones a impresoras remotas que el usuario haya establecido.

Descripción

pPrinterName: Puntero a una cadena terminada con cero que especifica el nombre de la impresora (local o remota).

pServerName: Puntero a una cadena terminada en cero que contiene el nombre del servidor.

Attributes: Especifica información sobre los datos devueltos.

ValorSignificado
PRINTER_ATTRIBUTE_LOCALLa impresora es local.
PRINTER_ATTRIBUTE_NETWORKla impresora es remota.

Observaciones

La estructura PRINTER_INFO_4 proporciona una forma extremadamente rápida de recuperar los nombres tanto de las impresoras instaladas en la máquina local, como de las conexiones remotas que el usuario haya realizado. Cuando EnumPrinters es llamadacon una estructura PRINTER_INFO_4, la función consulta el registro para obtener la información, y regresa inmediatamente. Esto difiere del comportamiento de EnumPrinters cuando es llamada con otros niveles de estructuras de datos PRINTER_INFO_xxx. En particular, cuando EnumPrinters es invocada con un nivel 2 de estructura de datos (PRINTER_INFO_2), realiza una llamada a OpenPrinter para cada conexion remota. Si una conexión remota está caída, o si el servidor remoto o la impresora remota ya no existen, la función debe esperar a un time-out del RPC y al subsiguiente fallo de la llamada a OpenPrinter. Esto puede requerir cierto tiempo. Pasando una estructura PRINTER_INFO_4 se permite a la aplicación recuperar una parte mínima de la información requerida; si se desea información más detallada, se puede hacer una segunda llamada a EnumPrinters con nivel 2.