Funzione GetPrinter

La funzione GetPrinter recupera informazioni su una stampante specificata.

Sintassi

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

Parametri

hPrinter [in]

Handle per la stampante per cui la funzione recupera informazioni. Utilizzare la funzione OpenPrinter o AddPrinter per recuperare un handle della stampante.

Livello [in]

Livello o tipo di struttura archiviato dalla funzione nel buffer a cui punta pPrinter.

Questo valore può essere 1, 2, 3, 4, 5, 6, 7, 8 o 9.

pPrinter [out]

Puntatore a un buffer che riceve una struttura contenente informazioni sulla stampante specificata. Il buffer deve essere sufficientemente grande per ricevere la struttura e tutte le stringhe o altri dati a cui puntano i membri della struttura. Se il buffer è troppo piccolo, il parametro pcbNeeded restituisce le dimensioni del buffer necessarie.

Il tipo di struttura è determinato dal valore di Level.

Level Struttura
1
Struttura PRINTER_INFO_1 contenente informazioni generali sulla stampante.
2
Struttura PRINTER_INFO_2 contenente informazioni dettagliate sulla stampante.
3
Struttura PRINTER_INFO_3 contenente le informazioni di sicurezza della stampante.
4
Struttura PRINTER_INFO_4 contenente informazioni minime sulla stampante, tra cui il nome della stampante, il nome del server e se la stampante è remota o locale.
5
Struttura PRINTER_INFO_5 contenente informazioni sulla stampante, ad esempio attributi della stampante e impostazioni di timeout.
6
Struttura PRINTER_INFO_6 che specifica il valore di stato di una stampante.
7
Struttura PRINTER_INFO_7 che indica se la stampante viene pubblicata nel servizio directory.
8
Struttura PRINTER_INFO_8 che specifica le impostazioni predefinite globali della stampante.
9
Struttura PRINTER_INFO_9 che specifica le impostazioni predefinite della stampante per utente.

cbBuf [in]

Dimensione, in byte, del buffer a cui punta pPrinter.

pcbNeeded [out]

Puntatore a una variabile che la funzione imposta sulle dimensioni, in byte, delle informazioni sulla stampante. Se cbBuf è minore di questo valore, GetPrinter ha esito negativo e il valore rappresenta le dimensioni del buffer necessarie. Se cbBuf è uguale o maggiore di questo valore, GetPrinter ha esito positivo e il valore rappresenta il numero di byte archiviati nel buffer.

Valore restituito

Se la funzione ha esito positivo, il valore restituito è un valore diverso da zero.

Se la funzione ha esito negativo, il valore restituito è zero.

Commenti

Nota

Si tratta di una funzione di blocco o sincrona e potrebbe non restituire immediatamente. La velocità di restituzione di questa funzione dipende da fattori di runtime come lo stato della rete, la configurazione del server di stampa e i fattori di implementazione del driver della stampante difficili da prevedere durante la scrittura di un'applicazione. Chiamando questa funzione da un thread che gestisce l'interazione con l'interfaccia utente, l'applicazione potrebbe sembrare non rispondente.

Il membro pDevMode nelle strutture PRINTER_INFO_2, PRINTER_INFO_8 e PRINTER_INFO_9 può essere NULL. In questo caso, la stampante non è utilizzabile fino a quando il driver non viene reinstallato correttamente.

Per le strutture PRINTER_INFO_2 e PRINTER_INFO_3 che contengono un puntatore a un descrittore di sicurezza, la funzione recupera solo i componenti del descrittore di sicurezza che il chiamante dispone dell'autorizzazione per la lettura. Per recuperare particolari componenti del descrittore di sicurezza, è necessario specificare i diritti di accesso necessari quando si chiama la funzione OpenPrinter per recuperare un handle alla stampante. La tabella seguente illustra i diritti di accesso necessari per leggere i vari componenti del descrittore di sicurezza.

Diritto di accesso Componente descrittore di sicurezza
READ_CONTROL
Proprietario
Gruppo primario
Elenco di controllo di accesso discrezionale (DACL)
ACCESS_SYSTEM_SECURITY
Elenco di controllo di accesso di sistema (SACL)

Se si specifica il livello 7, il membro dwAction di PRINTER_INFO_7 restituisce uno dei valori seguenti per indicare se la stampante viene pubblicata nel servizio directory.

valore dwAction Significato
DSPRINT_PUBLISH La stampante viene pubblicata. Il membro pszObjectGUID contiene il GUID dell'oggetto coda di stampa dei servizi directory associato alla stampante.
DSPRINT_UNPUBLISH La stampante non è pubblicata.
DSPRINT_PENDING Indica che il sistema sta tentando di completare un'operazione di pubblicazione o di annullamento della pubblicazione. Se una chiamata SetPrinter non riesce a pubblicare o annullare la pubblicazione di una stampante, il sistema tenta di completare ulteriormente l'operazione in background.

A partire da Windows Vista, i dati della stampante restituiti da GetPrinter vengono recuperati da una cache locale quando hPrinter fa riferimento a una stampante ospitata da un server di stampa ed è presente almeno una connessione aperta al server di stampa. In tutte le altre configurazioni, i dati della stampante vengono sottoposti a query dal server di stampa.

Requisiti

Requisito Valore
Client minimo supportato
Windows 2000 Professional [solo app desktop]
Server minimo supportato
Windows 2000 Server [solo app desktop]
Intestazione
Winspool.h (include Windows.h)
Libreria
Winspool.lib
DLL
Winspool.drv
Nomi Unicode e ANSI
GetPrinterW (Unicode) e GetPrinterA (ANSI)

Vedi anche

Stampa

Funzioni dell'API spooler di stampa

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