Compartilhar via


Função AddPrinterDriverEx

A função AddPrinterDriverEx instala um driver de impressora local ou remoto e vincula os arquivos de configuração, dados e driver. Além de ter os recursos do AddPrinterDriver, ele também tem opções que permitem atualização estrita, downgrade estrito, cópia somente de arquivos mais recentes e cópia de todos os arquivos (independentemente dos carimbos de data/hora do arquivo).

Observação

Não é mais recomendável instalar um driver de impressora sem um pacote de driver. Em vez disso , use InstallPrinterDriverFromPackage .

Sintaxe

BOOL AddPrinterDriverEx(
  _In_    LPTSTR pName,
  _In_    DWORD  Level,
  _Inout_ LPBYTE pDriverInfo,
  _In_    DWORD  dwFileCopyFlags
);

Parâmetros

pName [in]

Um ponteiro para uma cadeia de caracteres terminada em nulo que especifica o nome do servidor no qual o driver deve ser instalado. Se esse parâmetro for NULL, a função instalará o driver no computador local.

Nível [in]

A versão da estrutura para a qual pDriverInfo aponta. Esse valor pode ser 2, 3, 4, 6 ou 8.

pDriverInfo [entrada, saída]

Um ponteiro para uma estrutura que contém informações de driver de impressora. Pode ser um dos seguintes.

Valor de Level Estrutura DRIVER_INFO_*
2
DRIVER_INFO_2
3
DRIVER_INFO_3
4
DRIVER_INFO_4
6
DRIVER_INFO_6
8
DRIVER_INFO_8

Se o membro pEnvironment da estrutura apontada por pDriverInfo for NULL, a função usará o ambiente atual do chamador/cliente, não o ambiente do destino/servidor.

dwFileCopyFlags [in]

As opções para copiar os arquivos de driver. Esse parâmetro pode usar um dos valores a seguir.

Valor Significado
APD_COPY_ALL_FILES
Adicione o driver de impressora e copie todos os arquivos no diretório printer-driver. Os carimbos de data/hora do arquivo são ignorados com essa opção.
APD_COPY_FROM_DIRECTORY
Adicione o driver de impressora usando os nomes de arquivo totalmente qualificados especificados na estrutura DRIVER_INFO_6 . Esse sinalizador é ORed em conjunto com um dos outros sinalizadores de cópia. Se esse sinalizador for definido, AddPrinterDriverEx falhará se os arquivos não existirem onde eles são especificados para existir pela estrutura DRIVER_INFO_6 . Os arquivos não precisam ser copiados para o diretório printer-driver do sistema. Consulte os Comentários.
Windows 2000: Não há suporte para esse sinalizador.
APD_COPY_NEW_FILES
Adicione o driver da impressora e copie os arquivos no diretório printer-driver que são mais recentes do que os arquivos correspondentes que estão em uso no momento. Esse sinalizador emula o comportamento de AddPrinterDriver.
APD_STRICT_DOWNGRADE
Adicione o driver de impressora somente se todos os arquivos no diretório printer-driver forem mais antigos do que os arquivos correspondentes atualmente em uso.
APD_STRICT_UPGRADE
Adicione o driver de impressora somente se todos os arquivos no diretório printer-driver forem mais recentes do que os arquivos correspondentes atualmente em uso.

Valor retornado

Se a função for bem-sucedida, o valor retornado será um valor diferente de zero.

Se a função falhar, o valor retornado será zero.

Se o driver de impressora tiver problemas para trabalhar com o sistema operacional, AddPrinterDriverEx falhará com um dos seguintes códigos de erro:

Código do Erro Significado
ERROR_PRINTER_DRIVER_BLOCKED O driver não funciona no sistema operacional.
ERROR_PRINTER_DRIVER_WARNED O driver não é confiável no sistema operacional. No entanto, se APD_INSTALL_WARNED_DRIVER for especificado, o driver será instalado e nenhum aviso será dado.

Para obter mais informações, consulte Comentários.

Comentários

Observação

Essa é uma função de bloqueio ou síncrona e pode não retornar imediatamente. A rapidez com que essa função retorna depende de fatores de tempo de execução, como status de rede, configuração do servidor de impressão e fatores de implementação de driver de impressora que são difíceis de prever ao escrever um aplicativo. Chamar essa função de um thread que gerencia a interação com a interface do usuário pode fazer com que o aplicativo pareça não responder.

O chamador deve ter o SeLoadDriverPrivilege.

Antes de chamar a função AddPrinterDriverEx , todos os arquivos exigidos pelo driver devem ser copiados para o diretório printer-driver do sistema. Para recuperar o nome desse diretório, chame a função GetPrinterDriverDirectory .

Para determinar quais drivers de impressora estão instalados no momento, chame a função EnumPrinterDrivers .

Se o driver da impressora tiver sido adicionado com êxito, a função chamará a função DrvDriverEvent (DRIVER_EVENT_INITIALIZE, Level, DRIVER_INFO_*, lparam ) para permitir que o driver execute as inicializações necessárias durante a instalação de um driver de impressora. Para obter mais informações sobre o DrvDriverEvent, consulte o DDK (Microsoft Windows Driver Development Kit)

O driver não deve usar uma chamada de interface do usuário durante a chamada para DrvDriverEvent. Para fazer trabalhos relacionados à interface do usuário, o instalador deve usar a entrada VendorSetup no arquivo .inf da impressora ou, para dispositivos Plug and Play, o instalador pode usar um co-instalador específico do dispositivo. Para obter mais informações sobre VendorSetup, consulte o DDK.

Os arquivos referenciados na estrutura DRIVER_INFO_6 devem ser locais para o computador do qual a chamada é feita. Um nome de arquivo pode ser um nome UNC, desde que o nome UNC seja o computador local.

Requisitos

Requisito Valor
Cliente mínimo com suporte
Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte
Windows 2000 Server [somente aplicativos da área de trabalho]
Cabeçalho
Winspool.h (inclua Windows.h)
Biblioteca
Winspool.lib
DLL
Winspool.drv
Nomes Unicode e ANSI
AddPrinterDriverExW (Unicode) e AddPrinterDriverExA (ANSI)

Confira também

Impressão

Funções da API do Spooler de impressão

AddPrinterDriver

DRIVER_INFO_2

DRIVER_INFO_3

DRIVER_INFO_4

DRIVER_INFO_6

DeletePrinterDriverEx

EnumPrinterDrivers

GetPrinterDriverDirectory