Compartir a través de


Función DeviceCapabilitiesA (wingdi.h)

La función DeviceCapabilities recupera las funcionalidades de un controlador de impresora.

Sintaxis

int DeviceCapabilitiesA(
  [in]  LPCSTR         pDevice,
  [in]  LPCSTR         pPort,
  [in]  WORD           fwCapability,
  [out] LPSTR          pOutput,
  [in]  const DEVMODEA *pDevMode
);

Parámetros

[in] pDevice

Puntero a una cadena terminada en null que contiene el nombre de la impresora. Tenga en cuenta que este es el nombre de la impresora, no del controlador de impresora.

[in] pPort

Puntero a una cadena terminada en null que contiene el nombre del puerto al que está conectado el dispositivo, como LPT1.

[in] fwCapability

Funcionalidades que se van a consultar. Este parámetro puede ser uno de los siguientes valores.

Valor Significado
DC_BINNAMES
Recupera los nombres de las papeleras de la impresora. El búfer de pOutput recibe una matriz de búferes de cadena. Cada búfer de cadenas tiene 24 caracteres y contiene el nombre de una papelera. El valor devuelto indica el número de entradas de la matriz. Las cadenas de nombre finalizan en null a menos que el nombre tenga 24 caracteres de longitud. Si pOutput es null, el valor devuelto es el número de entradas bin necesarias.
DC_BINS
Recupera una lista de papeleras disponibles. El búfer pOutput recibe una matriz de valores de WORD que indican los orígenes de papel disponibles para la impresora. El valor devuelto indica el número de entradas de la matriz. Para obtener una lista de los posibles valores de matriz, vea la descripción de la miembro dmDefaultSource de la estructura DEVMODE de . Si pOutput es null, el valor devuelto indica el número necesario de entradas en la matriz.
DC_COLLATE
Si la impresora admite la intercalación, el valor devuelto es 1; de lo contrario, el valor devuelto es cero. No se usa el parámetro pOutput.
DC_COLORDEVICE
Si la impresora admite la impresión en color, el valor devuelto es 1; de lo contrario, el valor devuelto es cero. No se usa el parámetro pOutput.
DC_COPIES
Devuelve el número de copias que el dispositivo puede imprimir.
DC_DRIVER
Devuelve el número de versión del controlador de impresora.
DC_DUPLEX
Si la impresora admite impresión dúplex, el valor devuelto es 1; de lo contrario, el valor devuelto es cero. No se usa el parámetro pOutput.
DC_ENUMRESOLUTIONS
Recupera una lista de las resoluciones admitidas por la impresora. El búfer de pOutput recibe una matriz de valores de LONG . Para cada resolución admitida, la matriz contiene un par de valores long que especifican las dimensiones x e y de la resolución, en puntos por pulgada. El valor devuelto indica el número de resoluciones admitidas. Si pOutput es null, el valor devuelto indica el número de resoluciones admitidas.
DC_EXTRA
Devuelve el número de bytes necesarios para la parte específica del dispositivo de la estructura de DEVMODE para el controlador de impresora.
DC_FIELDS
Devuelve el miembro dmFields de la estructura del controlador de impresora DEVMODE. El miembro dmFields indica qué miembros de la parte independiente del dispositivo de la estructura son compatibles con el controlador de impresora.
DC_FILEDEPENDENCIES
Recupera los nombres de los archivos adicionales que se deben cargar cuando se instala un controlador. El búfer de pOutput recibe una matriz de búferes de cadena. Cada búfer de cadenas tiene 64 caracteres y contiene el nombre de un archivo. El valor devuelto indica el número de entradas de la matriz. Las cadenas de nombre finalizan en null a menos que el nombre tenga 64 caracteres de longitud. Si pOutput es null, el valor devuelto es el número de archivos.
DC_MAXEXTENT
Devuelve el tamaño máximo de papel que los dmPaperLength de y dmPaperWidth miembros de la estructura de DEVMODE del controlador de impresora. La LOWORD del valor devuelto contiene el valor máximo de dmPaperWidth y hiWORD contiene el valor máximo de dmPaperLength.
DC_MEDIAREADY
Recupera los nombres de los formularios de papel que están disponibles actualmente para su uso. El búfer de pOutput recibe una matriz de búferes de cadena. Cada búfer de cadenas tiene 64 caracteres y contiene el nombre de un formulario de papel. El valor devuelto indica el número de entradas de la matriz. Las cadenas de nombre finalizan en null a menos que el nombre tenga 64 caracteres de longitud. Si pOutput es NULL, el valor devuelto es el número de formularios de papel.
DC_MEDIATYPENAMES
Recupera los nombres de los tipos de medios admitidos. El búfer de pOutput recibe una matriz de búferes de cadena. Cada búfer de cadenas tiene 64 caracteres y contiene el nombre de un tipo de medio admitido. El valor devuelto indica el número de entradas de la matriz. Las cadenas terminan en null a menos que el nombre tenga 64 caracteres de longitud. Si pOutput es null, el valor devuelto es el número de nombres de tipo multimedia necesarios.
DC_MEDIATYPES
Recupera una lista de tipos de medios admitidos. El búfer pOutput recibe una matriz de valores DWORD que indican los tipos de medios admitidos. El valor devuelto indica el número de entradas de la matriz. Para obtener una lista de los posibles valores de matriz, vea la descripción del miembro dmMediaType del DEVMODE estructura. Si pOutput es null, el valor devuelto indica el número necesario de entradas en la matriz.
DC_MINEXTENT
Devuelve el tamaño mínimo del papel que pueden especificar los dmPaperLength dmPaperWidth y dmPaperWidth miembros del DEVMODE del controlador de impresora. La LOWORD del valor devuelto contiene el valor mínimo de dmPaperWidth y HIWORD contiene el valor mínimo dmPaperLength.
DC_ORIENTATION
Devuelve la relación entre las orientaciones verticales y horizontales de un dispositivo, en términos del número de grados en los que la orientación vertical se gira en sentido contrario a las agujas del reloj para generar orientación horizontal. El valor devuelto puede ser uno de los siguientes:
0
Sin orientación horizontal.
90
Vertical gira 90 grados para producir un paisaje.
270
Vertical gira 270 grados para producir un paisaje.
DC_NUP
Recupera una matriz de enteros que indican la capacidad de la impresora de imprimir varias páginas de documentos por página impresa. El búfer de pOutput recibe una matriz de valores DWORD de . Cada valor representa un número admitido de páginas de documento por página impresa. El valor devuelto indica el número de entradas de la matriz. Si pOutput es null, el valor devuelto indica el número necesario de entradas en la matriz.
DC_PAPERNAMES
Recupera una lista de nombres de papel admitidos (por ejemplo, Carta o Legal). El búfer de pOutput recibe una matriz de búferes de cadena. Cada búfer de cadenas tiene 64 caracteres y contiene el nombre de un formulario de papel. El valor devuelto indica el número de entradas de la matriz. Las cadenas de nombre finalizan en null a menos que el nombre tenga 64 caracteres de longitud. Si pOutput es NULL, el valor devuelto es el número de formularios de papel.
DC_PAPERS
Recupera una lista de tamaños de papel admitidos. El búfer pOutput recibe una matriz de valores de WORD que indican los tamaños de papel disponibles para la impresora. El valor devuelto indica el número de entradas de la matriz. Para obtener una lista de los posibles valores de matriz, vea la descripción de la dmPaperSize miembro del estructura de DEVMODE. Si pOutput es null, el valor devuelto indica el número necesario de entradas en la matriz.
DC_PAPERSIZE
Recupera las dimensiones, en décimas de un milímetro, de cada tamaño de papel admitido. El búfer de pOutput de recibe una matriz de estructuras de point de . Cada estructura contiene el ancho (dimensión x) y la longitud (dimensión y) de un tamaño de papel como si el papel estuviera en la orientación DMORIENT_PORTRAIT. El valor devuelto indica el número de entradas de la matriz.
DC_PERSONALITY
Recupera una lista de los idiomas de descripción de la impresora admitidos por la impresora. El búfer de pOutput recibe una matriz de búferes de cadena. Cada búfer tiene 32 caracteres y contiene el nombre de un lenguaje de descripción de impresora. El valor devuelto indica el número de entradas de la matriz. Las cadenas de nombre finalizan en null a menos que el nombre tenga 32 caracteres de longitud. Si pOutput es NULL, el valor devuelto indica el número necesario de entradas de matriz.
DC_PRINTERMEM
El valor devuelto es la cantidad de memoria de impresora disponible, en kilobytes. No se usa el parámetro pOutput.
DC_PRINTRATE
El valor devuelto indica la velocidad de impresión de la impresora. El valor devuelto para DC_PRINTRATEUNIT indica las unidades del valor de DC_PRINTRATE. No se usa el parámetro pOutput.
DC_PRINTRATEPPM
El valor devuelto indica la velocidad de impresión de la impresora, en páginas por minuto. No se usa el parámetro pOutput.
DC_PRINTRATEUNIT
El valor devuelto es uno de los siguientes valores que indican las unidades de velocidad de impresión para el valor devuelto para la marca DC_PRINTRATE. No se usa el parámetro pOutput.
PRINTRATEUNIT_CPS
Caracteres por segundo.
PRINTRATEUNIT_IPM
Pulgadas por minuto.
PRINTRATEUNIT_LPM
Líneas por minuto.
PRINTRATEUNIT_PPM
Páginas por minuto.
DC_SIZE
Devuelve el miembro de del controlador de impresora estructura de DEVMODE.
DC_STAPLE
Si la impresora admite la asociación, el valor devuelto es un valor distinto de cero; de lo contrario, el valor devuelto es cero. No se usa el parámetro pOutput.
DC_TRUETYPE
Recupera las capacidades del controlador para usar fuentes TrueType. Para DC_TRUETYPE, el parámetro pOutput debe ser null. El valor devuelto puede ser uno o varios de los siguientes:
DCTT_BITMAP
El dispositivo puede imprimir fuentes TrueType como gráficos.
DCTT_DOWNLOAD
El dispositivo puede descargar fuentes TrueType.
DCTT_SUBDEV
El dispositivo puede sustituir las fuentes del dispositivo para las fuentes TrueType.
DC_VERSION
Devuelve la versión de especificación a la que se ajusta el controlador de impresora.

[out] pOutput

Puntero a una matriz. El formato de la matriz depende de la configuración del parámetro fwCapability. Vea cada funcionalidad anterior para averiguar qué se devuelve si pOutput es NULL.

[in] pDevMode

Puntero a una estructura DEVMODE de . Si este parámetro es NULL, DeviceCapabilities recupera los valores de inicialización predeterminados actuales para el controlador de impresora especificado. De lo contrario, la función recupera los valores contenidos en la estructura a la que puntos pDevMode.

Valor devuelto

Si la función se ejecuta correctamente, el valor devuelto depende de la configuración del parámetro fwCapability. Un valor devuelto de cero suele indicar que, mientras la función se completó correctamente, hubo algún tipo de error, como una funcionalidad que no se admite. Para obtener más información, consulte las descripciones de los valores de fwCapability de .

Si la función devuelve -1, esto puede significar que no se admite la funcionalidad o que se produjo un error de función general.

Observaciones

Nota Esta es una función de bloqueo o sincrónica y podría no devolverse inmediatamente. La rapidez con la que se 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 la implementación del controlador de impresora, factores 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.
 
La estructura DEVMODE a la que apunta el parámetro pDevMode se puede obtener llamando a la función DocumentProperties.

Si un controlador de impresora admite funcionalidades de dispositivo personalizadas, el controlador debe llamar a la función SetPrinterData para cada funcionalidad personalizada. La función SetPrinterData agrega los datos de impresora adecuados al sistema de impresión, lo que permite que las aplicaciones de 32 bits accedan a las funcionalidades personalizadas en instalaciones de Windows de 64 bits.

Para cada funcionalidad personalizada, primero debe agregar datos de impresora que describen el tipo de la funcionalidad. Para ello, al llamar a SetPrinterData, establezca la cadena pValueName en CustomDeviceCapabilityType_Xxx, donde "Xxx" es la representación hexadecimal de la funcionalidad. Por ejemplo, podría tener "CustomDeviceCapabilityType_1234". Los datos del Registro que establezca deben ser del tipo REG_DWORD y debe establecer su valor en uno de los siguientes:

  • 0, si la funcionalidad personalizada es un DWORD
  • 1, si la funcionalidad personalizada es un búfer de bytes
  • 2, si la funcionalidad personalizada es una matriz de elementos
Si la funcionalidad personalizada es una matriz de elementos, debe llamar a SetPinterData una segunda vez para proporcionar información sobre el tamaño de un elemento de la matriz. Para ello, al llamar a SetPinterData, la cadena pValueName que proporcione debe ser "CustomDeviceCapabilitySize_Xxx" donde Xxx es la representación hexadecimal de la funcionalidad. Por ejemplo, puede tener "CustomDeviceCapabilitySize_1234". Los datos del Registro que establezca deben ser del tipo REG_DWORD y debe establecer su valor en el tamaño en bytes de un elemento de la matriz.

Nota

El encabezado wingdi.h define DeviceCapabilities como alias que selecciona automáticamente la versión ANSI o Unicode de esta función en función de la definición de la constante de preprocesador UNICODE. La combinación del uso del alias neutral de codificación con código que no es neutral de codificación puede dar lugar a errores de coincidencia que dan lugar a errores de compilación o tiempo de ejecución. Para obtener más información, vea Conventions for Function Prototypes.

Requisitos

Requisito Valor
cliente mínimo admitido Windows 2000 Professional [solo aplicaciones de escritorio]
servidor mínimo admitido Windows 2000 Server [solo aplicaciones de escritorio]
de la plataforma de destino de Windows
encabezado de wingdi.h (incluya Windows.h)
biblioteca de WinSpool.lib
DLL de WinSpool.drv

Consulte también

DEVMODE

DOCINFO

DocumentProperties

GetDeviceCaps

GetProcAddress

loadLibrary

POINT de

de funciones de API de administrador de trabajos de impresión

de impresión

startDoc