Função GetPrinter

A função GetPrinter recupera informações sobre uma impressora especificada.

Sintaxe

BOOL GetPrinter(
  _In_  HANDLE  hPrinter,
  _In_  DWORD   Level,
  _Out_ LPBYTE  pPrinter,
  _In_  DWORD   cbBuf,
  _Out_ LPDWORD pcbNeeded
);

Parâmetros

hPrinter [in]

Um identificador para a impressora para a qual a função recupera informações. Use a função OpenPrinter ou AddPrinter para recuperar um identificador de impressora.

Nível [in]

O nível ou o tipo de estrutura que a função armazena no buffer apontado por pPrinter.

Esse valor pode ser 1, 2, 3, 4, 5, 6, 7, 8 ou 9.

pPrinter [out]

Um ponteiro para um buffer que recebe uma estrutura que contém informações sobre a impressora especificada. O buffer deve ser grande o suficiente para receber a estrutura e quaisquer cadeias de caracteres ou outros dados aos quais os membros da estrutura apontam. Se o buffer for muito pequeno, o parâmetro pcbNeeded retornará o tamanho do buffer necessário.

O tipo de estrutura é determinado pelo valor de Level.

Nível Estrutura
1
Uma estrutura PRINTER_INFO_1 que contém informações gerais da impressora.
2
Uma estrutura PRINTER_INFO_2 que contém informações detalhadas sobre a impressora.
3
Uma estrutura PRINTER_INFO_3 que contém as informações de segurança da impressora.
4
Uma estrutura PRINTER_INFO_4 que contém informações mínimas da impressora, incluindo o nome da impressora, o nome do servidor e se a impressora é remota ou local.
5
Uma estrutura PRINTER_INFO_5 que contém informações da impressora, como atributos de impressora e configurações de tempo limite.
6
Uma estrutura PRINTER_INFO_6 especificando o valor status de uma impressora.
7
Uma estrutura PRINTER_INFO_7 que indica se a impressora está publicada no serviço de diretório.
8
Uma estrutura PRINTER_INFO_8 especificando as configurações globais de impressora padrão.
9
Uma estrutura PRINTER_INFO_9 especificando as configurações de impressora padrão por usuário.

cbBuf [in]

O tamanho, em bytes, do buffer apontado por pPrinter.

pcbNeeded [out]

Um ponteiro para uma variável que a função define como o tamanho, em bytes, das informações da impressora. Se cbBuf for menor que esse valor, GetPrinter falhará e o valor representará o tamanho do buffer necessário. Se cbBuf for igual ou maior que esse valor, GetPrinter terá êxito e o valor representará o número de bytes armazenados no buffer.

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.

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 do driver de impressora que são difíceis de prever ao gravar 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 membro pDevMode nas estruturas PRINTER_INFO_2, PRINTER_INFO_8 e PRINTER_INFO_9 pode ser NULL. Quando isso acontece, a impressora fica inutilizável até que o driver seja reinstalado com êxito.

Para as estruturas PRINTER_INFO_2 e PRINTER_INFO_3 que contêm um ponteiro para um descritor de segurança, a função recupera apenas os componentes do descritor de segurança que o chamador tem permissão para ler. Para recuperar componentes específicos do descritor de segurança, você deve especificar os direitos de acesso necessários ao chamar a função OpenPrinter para recuperar um identificador para a impressora. A tabela a seguir mostra os direitos de acesso necessários para ler os vários componentes do descritor de segurança.

Direitos de acesso Componente descritor de segurança
READ_CONTROL
Proprietário
Grupo primário
DACL (lista de controle de acesso discricionário)
ACCESS_SYSTEM_SECURITY
SACL (lista de controle de acesso do sistema)

Se você especificar o nível 7, o membro dwAction de PRINTER_INFO_7 retornará um dos valores a seguir para indicar se a impressora está publicada no serviço de diretório.

valor dwAction Significado
DSPRINT_PUBLISH A impressora é publicada. O membro pszObjectGUID contém o GUID do objeto de fila de impressão dos serviços de diretório associado à impressora.
DSPRINT_UNPUBLISH A impressora não foi publicada.
DSPRINT_PENDING Indica que o sistema está tentando concluir uma operação de publicação ou publicação. Se uma chamada SetPrinter não publicar ou cancelar a publicação de uma impressora, o sistema fará mais tentativas de concluir a operação em segundo plano.

A partir do Windows Vista, os dados da impressora retornados pelo GetPrinter são recuperados de um cache local quando hPrinter se refere a uma impressora hospedada por um servidor de impressão e há pelo menos uma conexão aberta com o servidor de impressão. Em todas as outras configurações, os dados da impressora são consultados do servidor de impressão.

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
GetPrinterW (Unicode) e GetPrinterA (ANSI)

Confira também

Impressão

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

AbortPrinter

AddPrinter

ClosePrinter

DeletePrinter

EnumPrinters

PRINTER_INFO_1

PRINTER_INFO_2

PRINTER_INFO_3

PRINTER_INFO_4

PRINTER_INFO_5

PRINTER_INFO_7

PRINTER_INFO_8

PRINTER_INFO_9

OpenPrinter

SetPrinter