Función GetPrinter
La función GetPrinter recupera información sobre una impresora especificada.
Sintaxis
BOOL GetPrinter(
_In_ HANDLE hPrinter,
_In_ DWORD Level,
_Out_ LPBYTE pPrinter,
_In_ DWORD cbBuf,
_Out_ LPDWORD pcbNeeded
);
Parámetros
-
hPrinter [in]
-
Identificador de la impresora para la que la función recupera información. Use la función OpenPrinter o AddPrinter para recuperar un identificador de impresora.
-
Nivel [in]
-
Nivel o tipo de estructura que la función almacena en el búfer al que apunta pPrinter.
Este valor puede ser 1, 2, 3, 4, 5, 6, 7, 8 o 9.
-
pPrinter [out]
-
Puntero a un búfer que recibe una estructura que contiene información sobre la impresora especificada. El búfer debe ser lo suficientemente grande como para recibir la estructura y las cadenas u otros datos a los que apuntan los miembros de la estructura. Si el búfer es demasiado pequeño, el parámetro pcbNeeded devuelve el tamaño de búfer necesario.
El tipo de estructura viene determinado por el valor de Level.
Nivel Estructura - 1
Estructura PRINTER_INFO_1 que contiene información general de la impresora. - 2
Estructura PRINTER_INFO_2 que contiene información detallada sobre la impresora. - 3
Estructura PRINTER_INFO_3 que contiene la información de seguridad de la impresora. - 4
Estructura PRINTER_INFO_4 que contiene información mínima de la impresora, incluido el nombre de la impresora, el nombre del servidor y si la impresora es remota o local. - 5
Estructura PRINTER_INFO_5 que contiene información de impresora, como atributos de impresora y configuración de tiempo de espera. - 6
Estructura PRINTER_INFO_6 que especifica el valor de estado de una impresora. - 7
Estructura PRINTER_INFO_7 que indica si la impresora se publica en el servicio de directorio. - 8
Estructura PRINTER_INFO_8 que especifica la configuración de impresora predeterminada global. - 9
Estructura de PRINTER_INFO_9 que especifica la configuración de impresora predeterminada por usuario. -
cbBuf [in]
-
Tamaño, en bytes, del búfer al que apunta pPrinter.
-
pcbNeededed [out]
-
Puntero a una variable que la función establece en el tamaño, en bytes, de la información de la impresora. Si cbBuf es menor que este valor, Se produce un error en GetPrinter y el valor representa el tamaño de búfer necesario. Si cbBuf es igual o mayor que este valor, GetPrinter se realiza correctamente y el valor representa el número de bytes almacenados en el búfer.
Valor devuelto
Si la función se ejecuta correctamente, el valor devuelto es un valor distinto de cero.
Si la función no se realiza correctamente, el valor devuelto es cero.
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.
El miembro pDevMode de las estructuras PRINTER_INFO_2, PRINTER_INFO_8 y PRINTER_INFO_9 puede ser NULL. Cuando esto sucede, la impresora no se puede usar hasta que el controlador se vuelva a instalar correctamente.
Para las estructuras PRINTER_INFO_2 y PRINTER_INFO_3 que contienen un puntero a un descriptor de seguridad, la función recupera solo los componentes del descriptor de seguridad que el autor de la llamada tiene permiso para leer. Para recuperar determinados componentes del descriptor de seguridad, debe especificar los derechos de acceso necesarios al llamar a la función OpenPrinter para recuperar un identificador de la impresora. En la tabla siguiente se muestran los derechos de acceso necesarios para leer los distintos componentes del descriptor de seguridad.
Derecho de acceso | Componente descriptor de seguridad |
---|---|
READ_CONTROL |
Propietario Grupo primario Lista de control de acceso discrecional (DACL) |
ACCESS_SYSTEM_SECURITY |
Lista de control de acceso del sistema (SACL) |
Si especifica el nivel 7, el miembro dwAction de PRINTER_INFO_7 devuelve uno de los siguientes valores para indicar si la impresora se publica en el servicio de directorio.
valor dwAction | Significado |
---|---|
DSPRINT_PUBLISH | La impresora se publica. El miembro pszObjectGUID contiene el GUID del objeto de cola de impresión de servicios de directorio asociado a la impresora. |
DSPRINT_UNPUBLISH | La impresora no está publicada. |
DSPRINT_PENDING | Indica que el sistema está intentando completar una operación de publicación o cancelación de la publicación. Si una llamada a SetPrinter no puede publicar o cancelar la publicación de una impresora, el sistema realiza más intentos de completar la operación en segundo plano. |
A partir de Windows Vista, los datos de impresora devueltos por GetPrinter se recuperan de una caché local cuando hPrinter hace referencia a una impresora hospedada por un servidor de impresión y hay al menos una conexión abierta con el servidor de impresión. En todas las demás configuraciones, los datos de la impresora se consultan desde el servidor de impresión.
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 |
|
Biblioteca |
|
Archivo DLL |
|
Nombres Unicode y ANSI |
GetPrinterW (Unicode) y GetPrinterA (ANSI) |