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