Compartir a través de


Función GetPrinterData

La función GetPrinterData recupera los datos de configuración de la impresora o el servidor de impresión especificados.

En Windows 2000 y versiones posteriores de Windows, llamar a GetPrinterData equivale a llamar a GetPrinterDataEx con el parámetro pKeyName establecido en "PrinterDriverData".

Sintaxis

DWORD GetPrinterData(
  _In_  HANDLE  hPrinter,
  _In_  LPTSTR  pValueName,
  _Out_ LPDWORD pType,
  _Out_ LPBYTE  pData,
  _In_  DWORD   nSize,
  _Out_ LPDWORD pcbNeeded
);

Parámetros

hPrinter [in]

Identificador de la impresora o servidor de impresión para el que la función recupera los datos de configuración. Use la función OpenPrinter, OpenPrinter2 o AddPrinter para recuperar un identificador de impresora.

pValueName [in]

Puntero a una cadena terminada en null que identifica los datos que se van a recuperar.

En el caso de las impresoras, esta cadena es el nombre de un valor del Registro en la clave "PrinterDriverData" de la impresora en el Registro.

En el caso de los servidores de impresión, esta cadena es una de las cadenas predefinidas enumeradas en la sección Comentarios siguiente.

pType [out]

Puntero a una variable que recibe un valor que indica el tipo de datos recuperados en pData. La función devuelve el tipo especificado en la llamada SetPrinterData o SetPrinterDataEx que almacena los datos. Establezca este parámetro en NULL si no necesita el tipo de datos.

pData [out]

Puntero a un búfer que recibe los datos de configuración.

nSize [in]

Tamaño, en bytes, del búfer al que apunta pData .

pcbNeeded [ out]

Puntero a una variable que recibe el tamaño, en bytes, de los datos de configuración. Si el tamaño del búfer especificado por nSize es demasiado pequeño, la función devuelve ERROR_MORE_DATA y pcbNeeded indica el tamaño de búfer necesario.

Valor devuelto

Si la función se ejecuta correctamente, el valor devuelto es ERROR_SUCCESS. Si se produce un error en la función, el valor devuelto es un valor de error.

Comentarios

Nota

Se trata de una función de bloqueo o sincrónica que podría no devolverse inmediatamente. La rapidez con la que devuelve esta función depende de factores en tiempo de ejecución, como el estado de red, la configuración del servidor de impresión y los factores de implementación del controlador de impresora que son difíciles de predecir al escribir una aplicación. Llamar a esta función desde un subproceso que administra la interacción con la interfaz de usuario podría hacer que la aplicación parezca que no responde.

GetPrinterData recupera los datos de configuración de la impresora establecidos por la función SetPrinterDataEx o SetPrinterData .

GetPrinterData podría desencadenar una llamada de Windows a GetPrinterDataFromPort, que podría escribir en el registro. Si lo hace, pueden producirse efectos secundarios, como desencadenar un identificador de evento de actualización o actualización de la impresora 20 en el cliente, si la impresora se comparte en una red.

Si hPrinter es un identificador de un servidor de impresión, pValueName puede especificar uno de los siguientes valores predefinidos.

Valor Comentarios
SPLREG_ALLOW_USER_MANAGEFORMS Windows XP con Service Pack 2 (SP2) y versiones posteriores
Windows Server 2003 con Service Pack 1 (SP1) y versiones posteriores
SPLREG_ARCHITECTURE
SPLREG_BEEP_ENABLED
SPLREG_DEFAULT_SPOOL_DIRECTORY
SPLREG_DNS_MACHINE_NAME
SPLREG_DS_PRESENT Si la devolución es correcta, pData contiene 0x0001 si la máquina está en un dominio DS, de lo contrario, 0.
SPLREG_DS_PRESENT_FOR_USER Si la devolución es correcta, pData contiene 0x0001 si el usuario ha iniciado sesión en un dominio DS; de lo contrario, 0.
SPLREG_EVENT_LOG
SPLREG_MAJOR_VERSION
SPLREG_MINOR_VERSION
SPLREG_NET_POPUP No se admite en Windows Server 2003 y versiones posteriores
SPLREG_NET_POPUP_TO_COMPUTER Si la devolución se realiza correctamente, pData contiene 1 si se deben enviar notificaciones de trabajo al equipo cliente o 0 si se enviarán notificaciones de trabajo al usuario.
No se admite en Windows Server 2003 y versiones posteriores
SPLREG_OS_VERSION Windows XP y versiones posteriores
SPLREG_OS_VERSIONEX
SPLREG_PORT_THREAD_PRIORITY_DEFAULT
SPLREG_PORT_THREAD_PRIORITY
SPLREG_PRINT_DRIVER_ISOLATION_GROUPS Windows 7 y versiones posteriores
SPLREG_PRINT_DRIVER_ISOLATION_TIME_BEFORE_RECYCLE Windows 7 y versiones posteriores
SPLREG_PRINT_DRIVER_ISOLATION_MAX_OBJECTS_BEFORE_RECYCLE Windows 7 y versiones posteriores
SPLREG_PRINT_DRIVER_ISOLATION_IDLE_TIMEOUT Windows 7 y versiones posteriores
SPLREG_PRINT_DRIVER_ISOLATION_EXECUTION_POLICY Windows 7 y versiones posteriores
SPLREG_PRINT_DRIVER_ISOLATION_OVERRIDE_POLICY Windows 7 y versiones posteriores
SPLREG_REMOTE_FAX Si la devolución es correcta, pData contiene 0x0001 si el servicio fax admite clientes remotos, de lo contrario, 0.
SPLREG_RETRY_POPUP Si el resultado es correcto, pData contiene 1 si el servidor está configurado para reintentar ventanas emergentes para todos los trabajos o 0 si el servidor no vuelve a intentar ventanas emergentes para todos los trabajos.
No se admite en Windows Server 2003 y versiones posteriores
SPLREG_SCHEDULER_THREAD_PRIORITY
SPLREG_SCHEDULER_THREAD_PRIORITY_DEFAULT
SPLREG_WEBSHAREMGMT Windows Server 2003 y versiones posteriores

Los siguientes valores de pValueName indican el comportamiento de impresión del grupo cuando se produce un error.

Valor Comentarios
SPLREG_RESTART_JOB_ON_POOL_ERROR El valor de pData indica el tiempo, en segundos, cuando se reinicia un trabajo en otro puerto después de producirse un error. Esta configuración se usa con SPLREG_RESTART_JOB_ON_POOL_ENABLED.
SPLREG_RESTART_JOB_ON_POOL_ENABLED Un valor distinto de cero en pData indica que SPLREG_RESTART_JOB_ON_POOL_ERROR está habilitado.

El tiempo especificado en SPLREG_RESTART_JOB_ON_POOL_ERROR es un tiempo mínimo. El tiempo real puede ser mayor, dependiendo de la siguiente configuración del monitor de puerto, que son valores del Registro en esta clave del Registro:

HKLM\SYSTEM\CurrentControlSet\Control\Print\Monitors\<MonitorName>\Ports

Llame a la función RegQueryValueEx para consultar estos valores.

Configuración del monitor de puerto Tipo de datos Significado
StatusUpdateEnabled REG_DWORD Si un valor distinto de cero, permite que el monitor de puertos actualice el administrador de colas con el estado del puerto.
StatusUpdateInterval REG_DWORD Especifica el intervalo, en minutos, cuando el monitor de puertos actualiza el administrador de cola con el estado del puerto.

En Windows 7 y versiones posteriores de Windows, los trabajos de impresión que se envían a un servidor de impresión se representan en el cliente de forma predeterminada. Los valores siguientes configuran la representación del lado cliente de un trabajo de impresión y se pueden leer si establece los valores siguientes en pValueName.

Configuración Tipo de datos Descripción
EMFDespoolingSetting REG_DWORD Un valor de 0, o si este valor no está presente en el registro, habilita la representación predeterminada del lado cliente de los trabajos de impresión.
Un valor de 1 deshabilita la representación del lado cliente de los trabajos de impresión.
ForceClientSideRendering REG_DWORD Un valor de 0, o si este valor no está presente en el Registro, hará que los trabajos de impresión se represente en el cliente. Si no se puede representar un trabajo de impresión en el cliente, se representará en el servidor. Si no se puede representar un trabajo de impresión en el servidor, se producirá un error.
Un valor de 1 representará los trabajos de impresión en el cliente. Si no se puede representar un trabajo de impresión en el cliente, se producirá un error.

Requisitos

Requisito Value
Cliente mínimo compatible
Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible
Windows 2000 Server [solo aplicaciones de escritorio]
Encabezado
Winspool.h (incluye Windows.h)
Biblioteca
Winspool.lib
Archivo DLL
Winspool.drv
Nombres Unicode y ANSI
GetPrinterDataW (Unicode) y GetPrinterDataA (ANSI)

Consulte también

Impresión

Funciones de la API del administrador de trabajos de impresión

GetPrinterDataEx

OpenPrinter

SetPrinter

SetPrinterData

SetPrinterDataEx

PRINTPROCESSOR_CAPS_1