Funzione GetPrinterData

La funzione GetPrinterData recupera i dati di configurazione per la stampante o il server di stampa specificati.

In Windows 2000 e versioni successive di Windows chiamare GetPrinterData equivale a chiamare GetPrinterDataEx con il parametro pKeyName impostato su "PrinterDriverData".

Sintassi

DWORD GetPrinterData(
  _In_  HANDLE  hPrinter,
  _In_  LPTSTR  pValueName,
  _Out_ LPDWORD pType,
  _Out_ LPBYTE  pData,
  _In_  DWORD   nSize,
  _Out_ LPDWORD pcbNeeded
);

Parametri

hPrinter [in]

Handle per la stampante o il server di stampa per cui la funzione recupera i dati di configurazione. Usare la funzione OpenPrinter, OpenPrinter2 o AddPrinter per recuperare un handle di stampante.

pValueName [in]

Puntatore a una stringa con terminazione null che identifica i dati da recuperare.

Per le stampanti, questa stringa è il nome di un valore del Registro di sistema nella chiave "PrinterDriverData" della stampante nel Registro di sistema.

Per i server di stampa, questa stringa è una delle stringhe predefinite elencate nella sezione Osservazioni seguenti.

pType [out]

Puntatore a una variabile che riceve un valore che indica il tipo di dati recuperati in pData. La funzione restituisce il tipo specificato nella chiamata SetPrinterData o SetPrinterDataEx archiviata. Impostare questo parametro su NULL se non è necessario il tipo di dati.

pData [out]

Puntatore a un buffer che riceve i dati di configurazione.

nSize [in]

Dimensioni, in byte, del buffer a cui pData punta.

pcbNeeded [out]

Puntatore a una variabile che riceve le dimensioni, in byte, dei dati di configurazione. Se le dimensioni del buffer specificate da nSize sono troppo piccole, la funzione restituisce ERROR_MORE_DATA e pcbNeeded indica la dimensione del buffer necessaria.

Valore restituito

Se la funzione ha esito positivo, il valore restituito è ERROR_SUCCESS. Se la funzione ha esito negativo, il valore restituito è un valore di errore.

Commenti

Nota

Si tratta di una funzione di blocco o sincrona e potrebbe non restituire immediatamente. La velocità con cui questa funzione restituisce 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. La chiamata a questa funzione da un thread che gestisce l'interazione con l'interfaccia utente potrebbe rendere l'applicazione non rispondente.

GetPrinterData recupera i dati di configurazione della stampante impostati dalla funzione SetPrinterDataEx o SetPrinterData .

GetPrinterData potrebbe attivare una chiamata di Windows a GetPrinterDataFromPort, che potrebbe scrivere nel Registro di sistema. In caso contrario, gli effetti collaterali possono verificarsi, ad esempio l'attivazione di un aggiornamento o l'ID evento della stampante 20 nel client, se la stampante è condivisa in una rete.

Se hPrinter è un handle a un server di stampa, pValueName può specificare uno dei valori predefiniti seguenti.

valore Commenti
SPLREG_ALLOW_USER_MANAGEFORMS Windows XP con Service Pack 2 (SP2) e versioni successive
Windows Server 2003 con Service Pack 1 (SP1) e versioni successive
SPLREG_ARCHITECTURE
SPLREG_BEEP_ENABLED
SPLREG_DEFAULT_SPOOL_DIRECTORY
SPLREG_DNS_MACHINE_NAME
SPLREG_DS_PRESENT Al termine della restituzione, pData contiene 0x0001 se il computer si trova in un dominio DS, in caso contrario, 0.
SPLREG_DS_PRESENT_FOR_USER Al termine della restituzione, pData contiene 0x0001 se l'utente è connesso a un dominio DS, in caso contrario, 0.
SPLREG_EVENT_LOG
SPLREG_MAJOR_VERSION
SPLREG_MINOR_VERSION
SPLREG_NET_POPUP Non supportato in Windows Server 2003 e versioni successive
SPLREG_NET_POPUP_TO_COMPUTER Al termine della restituzione, pData contiene 1 se le notifiche del processo devono essere inviate al computer client o 0 se le notifiche del processo devono essere inviate all'utente.
Non supportato in Windows Server 2003 e versioni successive
SPLREG_OS_VERSION Windows XP e versioni successive
SPLREG_OS_VERSIONEX
SPLREG_PORT_THREAD_PRIORITY_DEFAULT
SPLREG_PORT_THREAD_PRIORITY
SPLREG_PRINT_DRIVER_ISOLATION_GROUPS Windows 7 e versioni successive
SPLREG_PRINT_DRIVER_ISOLATION_TIME_BEFORE_RECYCLE Windows 7 e versioni successive
SPLREG_PRINT_DRIVER_ISOLATION_MAX_OBJECTS_BEFORE_RECYCLE Windows 7 e versioni successive
SPLREG_PRINT_DRIVER_ISOLATION_IDLE_TIMEOUT Windows 7 e versioni successive
SPLREG_PRINT_DRIVER_ISOLATION_EXECUTION_POLICY Windows 7 e versioni successive
SPLREG_PRINT_DRIVER_ISOLATION_OVERRIDE_POLICY Windows 7 e versioni successive
SPLREG_REMOTE_FAX Al termine della restituzione, pData contiene 0x0001 se il servizio FAX supporta i client remoti, in caso contrario 0.
SPLREG_RETRY_POPUP Al termine della restituzione, pData contiene 1 se il server è impostato per riprovare a visualizzare le finestre popup per tutti i processi o 0 se il server non riprova le finestre popup per tutti i processi.
Non supportato in Windows Server 2003 e versioni successive
SPLREG_SCHEDULER_THREAD_PRIORITY
SPLREG_SCHEDULER_THREAD_PRIORITY_DEFAULT
SPLREG_WEBSHAREMGMT Windows Server 2003 e versioni successive

I valori seguenti di pValueName indicano il comportamento di stampa del pool quando si verifica un errore.

valore Commenti
SPLREG_RESTART_JOB_ON_POOL_ERROR Il valore di pData indica l'ora, in secondi, quando un processo viene riavviato in un'altra porta dopo un errore. Questa impostazione viene usata con SPLREG_RESTART_JOB_ON_POOL_ENABLED.
SPLREG_RESTART_JOB_ON_POOL_ENABLED Un valore diverso da zero in pData indica che SPLREG_RESTART_JOB_ON_POOL_ERROR è abilitato.

L'ora specificata in SPLREG_RESTART_JOB_ON_POOL_ERROR è un tempo minimo. Il tempo effettivo può essere più lungo, a seconda delle impostazioni di monitoraggio delle porte seguenti, che sono valori del Registro di sistema in questa chiave del Registro di sistema:

HKLM\SYSTEM\CurrentControlSet\Control\Print\Monitor<\MonitorName>\Porte

Chiamare la funzione RegQueryValueEx per eseguire query su questi valori.

Impostazione del monitoraggio delle porte Tipo di dati Significato
StatusUpdateEnabled REG_DWORD Se un valore diverso da zero consente al monitoraggio della porta di aggiornare lo spooler con lo stato della porta.
StatusUpdateInterval REG_DWORD Specifica l'intervallo, in minuti, quando il monitoraggio della porta aggiorna lo spooler con lo stato della porta.

In Windows 7 e versioni successive di Windows, i processi di stampa inviati a un server di stampa vengono visualizzati per impostazione predefinita sul client. I valori seguenti configurano il rendering lato client di un processo di stampa e possono essere letti se si impostano i valori seguenti in pValueName.

Impostazione Tipo di dati Descrizione
EMFDespoolingSetting REG_DWORD Un valore pari a 0 o se questo valore non è presente nel Registro di sistema, abilita il rendering lato client predefinito dei processi di stampa.
Il valore 1 disabilita il rendering lato client dei processi di stampa.
ForceClientSideRendering REG_DWORD Un valore pari a 0 o se questo valore non è presente nel Registro di sistema, causerà il rendering dei processi di stampa nel client. Se non è possibile eseguire il rendering di un processo di stampa nel client, verrà eseguito il rendering nel server. Se non è possibile eseguire il rendering di un processo di stampa nel server, avrà esito negativo.
Il valore 1 eseguirà il rendering dei processi di stampa nel client. Se non è possibile eseguire il rendering di un processo di stampa nel client, avrà esito negativo.

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
GetPrinterDataW (Unicode) e GetPrinterDataA (ANSI)

Vedi anche

Stampa

Funzioni dell'API spooler di stampa

GetPrinterDataEx

OpenPrinter

Setprinter

SetPrinterData

SetPrinterDataEx

PRINTPROCESSOR_CAPS_1