Función DrvPrinterEvent (winddiui.h)
El administrador de impresión llama a la drvPrinterEvent función de interfaz de impresora al procesar eventos específicos de la impresora que podrían requerir la acción del controlador de impresora.
Sintaxis
BOOL DrvPrinterEvent(
[in] LPWSTR pPrinterName,
int DriverEvent,
DWORD Flags,
LPARAM lParam
);
Parámetros
[in] pPrinterName
Puntero proporcionado por el autor de la llamada a una cadena de nombre de impresora terminada en NULL. El formato de cadena puede ser \Machine\PrinterName para especificar una impresora remota o PrinterName para especificar una impresora local.
DriverEvent
Código de evento proporcionado por el autor de la llamada que identifica el evento. Se definen los siguientes códigos de evento:
Código de evento | Definición |
---|---|
PRINTER_EVENT_ADD_CONNECTION | El colador acaba de terminar de procesar una llamada a su función AddPrinterConnection, lo que permite a un usuario cliente conectarse a una impresora remota creada anteriormente. |
PRINTER_EVENT_ATTRIBUTES_CHANGED | Los bits de atributo de una impresora han cambiado. En respuesta a la llamada de una aplicación a la funciónSetPrinter, el administrador llama a la función DrvPrinterEvent del controlador de impresora, pasando el código de evento en la llamada. Cuando se usa este código de evento, el parámetro lParam apunta a una estructura de PRINTER_EVENT_ATTRIBUTES_INFO que describe los atributos antiguos y nuevos. |
PRINTER_EVENT_CACHE_DELETE | El administrador de colas está eliminando la memoria caché de archivos del cliente. |
PRINTER_EVENT_CACHE_REFRESH | El administrador de colas actualiza los archivos almacenados en caché del cliente. |
PRINTER_EVENT_CONFIGURATION_CHANGE | Reservado. |
PRINTER_EVENT_CONFIGURATION_UPDATE | La configuración de la impresora ha cambiado. Cuando se usa este código de evento, el parámetro lParam apunta a una cadena Unicode que contiene una notificación con formato según el esquema de notificación bidi. |
PRINTER_EVENT_DELETE_CONNECTION | El colador acaba de terminar de procesar una llamada a su función DeletePrinterConnection, lo que permite a un usuario cliente quitar una conexión de impresora. |
PRINTER_EVENT_DELETE | El administrador acaba de terminar de procesar una llamada a su función DeletePrinter, lo que permite a un administrador eliminar una instancia de impresora. |
PRINTER_EVENT_INITIALIZE | El administrador acaba de terminar de procesar una llamada a su función AddPrinter, lo que permite que un administrador haga que una impresora esté disponible en un servidor o su función SetPrinter, lo que permite a un administrador modificar el estado de una impresora. En una conexión de representación del lado cliente, el equipo cliente acaba de agregar la impresora GUID. El evento PRINTER_EVENT_INITIALIZE especifica un valor de parámetro lParam NULL para llamadas a DrvPrinterEvent en Windows Vista y versiones anteriores. Para Windows 7 y versiones posteriores, el parámetro lParam es un identificador de token de usuario. Los controladores de impresión pueden usar el identificador de token devuelto para consultar los datos del usuario o suplantar al usuario. |
Flags
Marca de bits proporcionada por el autor de la llamada, definida como se indica a continuación:
Valor | Definición |
---|---|
PRINTER_EVENT_FLAG_NO_UI | Si se establece, la función no debe mostrar una interfaz de usuario. Durante la instalación de un procesador de impresión, un monitor de impresión o un controlador de impresora, la única manera en que se permite una interfaz de usuario es mediante el uso de la directiva VendorSetup. Consulte entradas de archivo INF de impresora y Operaciones de instalación de impresora personalizadas para obtener más información. |
Cautela
La directiva VendorSetup está en desuso y no debe ser utilizada por ningún controlador nuevo v3 o v4 que desarrolle. Esta información sobre vendorSetup solo se proporciona como referencia o para el mantenimiento de los controladores v3 existentes que ya usan esta directiva INF.
lParam
No se usa a menos que el parámetro driverEvent de esté establecido en PRINTER_EVENT_ATTRIBUTES_CHANGED. En este caso, lParam contiene la dirección de una estructura de PRINTER_EVENT_ATTRIBUTES_INFO. (Consulte la descripción anterior del parámetro DriverEvent). Para todos los demás valores del parámetro DriverEvent de, el parámetro lParam es NULL.
Valor devuelto
Si la operación se realiza correctamente, la función debe devolver TRUE; De lo contrario, debe devolver FALSE. Sin embargo, actualmente, la única vez que se comprueba el valor devuelto de la función es cuando el administrador de colas ha llamado a DrvPrinterEvent durante el procesamiento de la función AddPrinter, con DriverEvent establecido en PRINTER_EVENT_INITIALIZE. Si drvPrinterEvent devuelve FALSE en este caso, el administrador de colas no crea la impresora y, en su lugar, hace que AddPrinter produzca un error.
Observaciones
Todos los archivos DLL de interfaz de impresora deben proporcionar una función DrvPrinterEvent y la función debe admitir el código de evento PRINTER_EVENT_INITIALIZE. La compatibilidad con todos los demás códigos de evento es opcional.
La configuración del Registro almacenada al controlar un evento de PRINTER_EVENT_INITIALIZE debe almacenarse en la clave de HKEY_LOCAL_MACHINE llamando a SetPrinterData. Para los códigos de evento PRINTER_EVENT_INITIALIZE y PRINTER_EVENT_DELETE, el administrador comprueba que el autor de la llamada tiene privilegios administrativos y llama a drvPrinterEvent al suplantar al autor de la llamada.
Por el contrario, si necesita almacenar la configuración en el Registro al controlar un evento de PRINTER_EVENT_ADD_CONNECTION, el archivo DLL de la interfaz de impresora debe escribirlos en la clave HKEY_CURRENT_USER para que se almacenen por usuario. A continuación, si un usuario con un perfil móvil registra en otro sistema, la conexión sigue al usuario. Solo se llama a la función DrvPrinterEvent cuando el usuario realiza la conexión por primera vez y no cuando el usuario inicia sesión posteriormente en otros sistemas mediante el perfil de itinerancia.
Para los códigos de evento PRINTER_EVENT_ADD_CONNECTION y PRINTER_EVENT_DELETE_CONNECTION, el DrvPrinterEvent contexto de ejecución de la función es la aplicación que realiza la llamada (normalmente la carpeta de impresión) y la función puede mostrar una interfaz de usuario. Para todos los demás códigos de evento, el contexto de ejecución es la cola de impresión y no se puede mostrar una interfaz de usuario.
Un ejemplo de un controlador que podría mostrar una interfaz de usuario cuando se realiza una conexión es un controlador fax, que podría pedir al usuario el nombre y el número de teléfono del usuario (remitente de FAX) y guardar la información hasta que se elimine la conexión.
Un ejemplo del tipo de archivo que se puede almacenar en una caché de cliente es un archivo de métricas de fuentes grande que contiene demasiada información que se va a escribir en el registro. Cuando el DrvPrinterEvent código de evento de la función está PRINTER_EVENT_CACHE_REFRESH, el archivo DLL de la interfaz de impresora puede volver a cargar el archivo desde el servidor para asegurarse de que la memoria caché está actualizada.
Requisitos
Requisito | Valor |
---|---|
de la plataforma de destino de | Escritorio |
encabezado de | winddiui.h (incluya Winddiui.h) |