Función AddPrinterDriverEx
La función AddPrinterDriverEx instala un controlador de impresora local o remota y vincula los archivos de configuración, datos y controladores. Además de tener las funcionalidades de AddPrinterDriver, también tiene opciones que permiten una actualización estricta, una degradación estricta, la copia de archivos más recientes solo y la copia de todos los archivos (independientemente de las marcas de tiempo de archivo).
Nota:
Ya no se recomienda instalar un controlador de impresora sin un paquete de controladores. Use InstallPrinterDriverFromPackage en su lugar.
Sintaxis
BOOL AddPrinterDriverEx(
_In_ LPTSTR pName,
_In_ DWORD Level,
_Inout_ LPBYTE pDriverInfo,
_In_ DWORD dwFileCopyFlags
);
Parámetros
-
pName [in]
-
Puntero a una cadena terminada en null que especifica el nombre del servidor en el que se debe instalar el controlador. Si este parámetro es NULL, la función instala el controlador en el equipo local.
-
Nivel [in]
-
Versión de la estructura a la que apunta pDriverInfo . Este valor puede ser 2, 3, 4, 6 o 8.
-
pDriverInfo [in, out]
-
Puntero a una estructura que contiene información del controlador de impresora. Puede ser uno de los siguientes.
Valor de Level DRIVER_INFO_* (Estructura) - 2
DRIVER_INFO_2 - 3
DRIVER_INFO_3 - 4
DRIVER_INFO_4 - 6
DRIVER_INFO_6 - 8
DRIVER_INFO_8 Si el miembro pEnvironment de la estructura a la que apunta pDriverInfo es NULL, la función usa el entorno actual del autor de la llamada o cliente, no el entorno del destino o servidor.
-
dwFileCopyFlags [in]
-
Las opciones para copiar los archivos del controlador. Este parámetro puede ser uno de los valores siguientes.
Valor Significado - APD_COPY_ALL_FILES
Agregue el controlador de impresora y copie todos los archivos en el directorio printer-driver. Las marcas de tiempo de archivo se omiten con esta opción. - APD_COPY_FROM_DIRECTORY
Agregue el controlador de impresora con los nombres de archivo completos especificados en la estructura DRIVER_INFO_6 . Esta marca es ORed junto con una de las otras marcas de copia. Si se establece esta marca, Se producirá un error en AddPrinterDriverEx si los archivos no existen donde se especifican para que existan en la estructura de DRIVER_INFO_6 . No es necesario copiar los archivos en el directorio printer-driver del sistema. Vea los comentarios.
Windows 2000: Esta marca no se admite.- APD_COPY_NEW_FILES
Agregue el controlador de impresora y copie los archivos en el directorio printer-driver que son más recientes que los archivos correspondientes que están actualmente en uso. Esta marca emula el comportamiento de AddPrinterDriver. - APD_STRICT_DOWNGRADE
Agregue el controlador de impresora solo si todos los archivos del directorio printer-driver son más antiguos que los archivos correspondientes actualmente en uso. - APD_STRICT_UPGRADE
Agregue el controlador de impresora solo si todos los archivos del directorio printer-driver son más recientes que los archivos correspondientes actualmente en uso.
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.
Si se sabe que el controlador de impresora tiene problemas para trabajar con el sistema operativo, AddPrinterDriverEx producirá uno de los siguientes códigos de error:
Código de error | Significado |
---|---|
ERROR_PRINTER_DRIVER_BLOCKED | El controlador no funciona en el sistema operativo. |
ERROR_PRINTER_DRIVER_WARNED | El controlador no es confiable en el sistema operativo. Sin embargo, si se especifica APD_INSTALL_WARNED_DRIVER, se instala el controlador y no se da ninguna advertencia. |
Para obtener más información, vea la sección Notas.
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.
El autor de la llamada debe tener SeLoadDriverPrivilege.
Antes de llamar a la función AddPrinterDriverEx , todos los archivos requeridos por el controlador deben copiarse en el directorio printer-driver del sistema. Para recuperar el nombre de este directorio, llame a la función GetPrinterDriverDirectory .
Para determinar qué controladores de impresora están instalados actualmente, llame a la función EnumPrinterDrivers .
Si el controlador de impresora se ha agregado correctamente, la función llama a la función DrvDriverEvent (DRIVER_EVENT_INITIALIZE, Level, DRIVER_INFO_*, lparam ) para permitir que el controlador realice las inicializaciones necesarias durante la instalación de un controlador de impresora. Para obtener más información sobre DrvDriverEvent, consulte el Kit de desarrollo de controladores de Microsoft Windows (DDK)
El controlador no debe usar una llamada de interfaz de usuario durante la llamada a DrvDriverEvent. Para realizar trabajos relacionados con la interfaz de usuario, el instalador debe usar la entrada VendorSetup en el archivo .inf de la impresora o, para Plug and Play dispositivos, el instalador puede usar un co-instalador específico del dispositivo. Para obtener más información sobre VendorSetup, consulte DDK.
Los archivos a los que se hace referencia en la estructura DRIVER_INFO_6 deben ser locales en el equipo desde el que se realiza la llamada. Un nombre de archivo puede ser un nombre UNC siempre que el nombre UNC sea la máquina local.
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 |
AddPrinterDriverExW (Unicode) y AddPrinterDriverExA (ANSI) |