Compartir a través de


Función EnumPrinterData

La función EnumPrinterData enumera los datos de configuración de una impresora especificada.

Para recuperar los datos de configuración en una sola llamada, use la función EnumPrinterDataEx .

Sintaxis

DWORD EnumPrinterData(
  _In_  HANDLE  hPrinter,
  _In_  DWORD   dwIndex,
  _Out_ LPTSTR  pValueName,
  _In_  DWORD   cbValueName,
  _Out_ LPDWORD pcbValueName,
  _Out_ LPDWORD pType,
  _Out_ LPBYTE  pData,
  _In_  DWORD   cbData,
  _Out_ LPDWORD pcbData
);

Parámetros

hPrinter [in]

Identificador de la impresora cuyos datos de configuración se van a obtener. Use la función OpenPrinter o AddPrinter para recuperar un identificador de impresora.

dwIndex [in]

Valor de índice que especifica el valor de datos de configuración que se va a recuperar.

Establezca este parámetro en cero para la primera llamada a EnumPrinterData para un identificador de impresora especificado. A continuación, incremente el parámetro en uno para las llamadas posteriores que implican la misma impresora, hasta que la función devuelva ERROR_NO_MORE_ITEMS. Consulte la siguiente sección Comentarios para obtener más información.

Si usa la técnica mencionada en las descripciones de los parámetros cbValueName y cbData para obtener los valores de tamaño de búfer adecuados, estableciendo ambos parámetros en cero en una primera llamada a EnumPrinterData para un identificador de impresora especificado, el valor de dwIndex no importa para esa llamada. Establezca dwIndex en cero en la siguiente llamada a EnumPrinterData para iniciar el proceso de enumeración real.

Los valores de datos de configuración no están ordenados. Los nuevos valores tendrán un índice arbitrario. Esto significa que la función EnumPrinterData puede devolver valores en cualquier orden.

pValueName [out]

Puntero a un búfer que recibe el nombre del valor de datos de configuración, incluido un carácter nulo de terminación.

cbValueName [in]

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

Si desea que el sistema operativo proporcione un tamaño de búfer adecuado, establezca este parámetro y el parámetro cbData en cero para la primera llamada a EnumPrinterData para un identificador de impresora especificado. Cuando se devuelve la función, la variable a la que apunta pcbValueName contendrá un tamaño de búfer lo suficientemente grande como para enumerar correctamente todos los nombres de valor de datos de configuración de la impresora.

pcbValueName [out]

Puntero a una variable que recibe el número de bytes almacenados en el búfer al que apunta pValueName.

pType [out]

Puntero a una variable que recibe un código que indica el tipo de datos almacenados en el valor especificado. Para obtener una lista de los posibles códigos de tipo, vea Tipos de valor del Registro. El parámetro pType puede ser NULL si no se requiere el código de tipo.

pData [out]

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

Este parámetro puede ser NULL si no se requiere el valor de los datos de configuración.

cbData [in]

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

Si desea que el sistema operativo proporcione un tamaño de búfer adecuado, establezca este parámetro y el parámetro cbValueName en cero para la primera llamada a EnumPrinterData para un identificador de impresora especificado. Cuando se devuelve la función, la variable a la que apunta pcbData contendrá un tamaño de búfer lo suficientemente grande como para enumerar correctamente todos los nombres de valor de datos de configuración de la impresora.

pcbData [out]

Puntero a una variable que recibe el número de bytes almacenados en el búfer al que apunta pData.

Este parámetro puede ser NULL si pData es NULL.

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 código de error del sistema.

La función devuelve ERROR_NO_MORE_ITEMS cuando no hay más valores de datos de configuración que recuperar para un identificador de impresora especificado.

Comentarios

Nota:

Se trata de una función de bloqueo o sincrónica y 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 de controladores 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.

EnumPrinterData recupera los datos de configuración de la impresora establecidos por la función SetPrinterData . Los datos de configuración de una impresora constan de un conjunto de valores con nombre y con tipo. La función EnumPrinterData obtiene uno de estos valores y su nombre y un código de tipo, cada vez que se llama a él. Llame a la función EnumPrinterData varias veces sucesivamente para obtener todos los valores de datos de configuración de una impresora.

Los datos de configuración de la impresora se almacenan en el registro. Al enumerar los datos de configuración de la impresora, debe evitar llamar a funciones del Registro que puedan cambiar esos datos.

Si desea que el sistema operativo proporcione un tamaño de búfer adecuado, primero llame a EnumPrinterData con los parámetros cbValueName y cbData establecidos en cero, como se indicó anteriormente en la sección Parámetros. El valor de dwIndex no importa para esta llamada. Cuando se devuelve la función, *pcbValueName y *pcbData contendrán tamaños de búfer lo suficientemente grandes como para enumerar todos los nombres y valores de los valores de los datos de configuración de la impresora. En la siguiente llamada, asigne el nombre de valor y los búferes de datos, establezca cbValueName y cbData en los tamaños en bytes de los búferes asignados y establezca dwIndex en cero. A partir de entonces, continúe llamando a la función EnumPrinterData , incrementando dwIndex por una cada vez, hasta que la función devuelva ERROR_NO_MORE_ITEMS.

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
EnumPrinterDataW (Unicode) y EnumPrinterDataA (ANSI)

Consulte también

Impresión

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

DeletePrinterData

EnumPrinterDataEx

GetPrinterData

OpenPrinter

SetPrinter

SetPrinterData