Funzione SetPrinterData

La funzione SetPrinterData imposta i dati di configurazione per una stampante o un server di stampa.

Per specificare la chiave del Registro di sistema in cui archiviare i dati, chiamare la funzione SetPrinterDataEx . La chiamata a SetPrinterData equivale a chiamare la funzione SetPrinterDataEx con il parametro pKeyName impostato su "PrinterDriverData".

Sintassi

DWORD SetPrinterData(
  _In_ HANDLE hPrinter,
  _In_ LPTSTR pValueName,
  _In_ DWORD  Type,
  _In_ LPBYTE pData,
  _In_ DWORD  cbData
);

Parametri

hPrinter [in]

Handle per la stampante o il server di stampa per cui la funzione imposta 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 impostare.

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.

Tipo [in]

Codice che indica il tipo di dati a cui punta il parametro pData . Per un elenco dei codici di tipo possibili, vedere Tipi di valore del Registro di sistema.

pData [in]

Puntatore a una matrice di byte che contiene i dati di configurazione della stampante.

cbData [in]

Dimensioni, in byte, della matrice.

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.

Per recuperare i dati di configurazione esistenti per una stampante, chiamare la funzione GetPrinterDataEx o GetPrinterData .

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_BEEP_ENABLED
SPLREG_DEFAULT_SPOOL_DIRECTORY
SPLREG_EVENT_LOG
SPLREG_NET_POPUP Non supportato in Windows Server 2003 e versioni successive
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_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 determinano 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 RegSetValueEx per impostare 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. Il rendering lato client di un processo di stampa può essere configurato per ogni stampante impostando 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, causa 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
SetPrinterDataW (Unicode) e SetPrinterDataA (ANSI)

Vedi anche

Stampa

Funzioni dell'API spooler di stampa

GetPrinter

GetPrinterData

GetPrinterDataEx

OpenPrinter

SetPrinterDataEx