Funzione DrvPrinterEvent (winddiui.h)

La funzione DrvPrinterEvent di una DLL dell'interfaccia della stampante viene chiamata dallo spooler di stampa durante l'elaborazione di eventi specifici della stampante che potrebbero richiedere un'azione dal driver della stampante.

Sintassi

BOOL DrvPrinterEvent(
  [in] LPWSTR pPrinterName,
       int    DriverEvent,
       DWORD  Flags,
       LPARAM lParam
);

Parametri

[in] pPrinterName

Puntatore fornito dal chiamante a una stringa di nome della stampante con terminazione NULL. Il formato stringa può essere \Machine\PrinterName per specificare una stampante remota o PrinterName per specificare una stampante locale.

DriverEvent

Codice evento fornito dal chiamante che identifica l'evento. I codici evento seguenti sono definiti:

Codice evento Definizione
PRINTER_EVENT_ADD_CONNECTION Il spooler ha appena completato l'elaborazione di una chiamata alla sua funzione AddPrinterConnection , che consente a un utente client di connettersi a una stampante remota creata in precedenza.
PRINTER_EVENT_ATTRIBUTES_CHANGED I bit di attributo per una stampante sono stati modificati. In risposta alla chiamata di un'applicazione alla funzione SetPrinter , lo spooler chiama la funzione DrvPrinterEvent del driver della stampante, passando il codice evento nella chiamata. Quando viene usato questo codice evento, il parametro lParam punta a una struttura PRINTER_EVENT_ATTRIBUTES_INFO che descrive gli attributi precedenti e i nuovi attributi.
PRINTER_EVENT_CACHE_DELETE Il spooler elimina la cache dei file del client.
PRINTER_EVENT_CACHE_REFRESH Il spooler aggiorna i file memorizzati nella cache del client.
PRINTER_EVENT_CONFIGURATION_CHANGE Riservato.
PRINTER_EVENT_CONFIGURATION_UPDATE La configurazione della stampante è stata modificata. Quando viene usato questo codice evento, il parametro lParam punta a una stringa Unicode contenente una notifica formattata in base allo schema di notifica Bidi.
PRINTER_EVENT_DELETE_CONNECTION Il spooler ha appena completato l'elaborazione di una chiamata alla funzione DeletePrinterConnection , che consente a un utente client di rimuovere una connessione della stampante.
PRINTER_EVENT_DELETE Il spooler ha appena completato l'elaborazione di una chiamata alla relativa funzione DeletePrinter , che consente a un amministratore di eliminare un'istanza della stampante.
PRINTER_EVENT_INITIALIZE Il spooler ha appena completato l'elaborazione di una chiamata alla sua funzione AddPrinter , che consente a un amministratore di rendere disponibile una stampante in un server o alla relativa funzione SetPrinter , che consente a un amministratore di modificare lo stato di una stampante. In una connessione di rendering lato client, il computer client ha appena aggiunto la stampante GUID. L'evento PRINTER_EVENT_INITIALIZE specifica un valore di parametro NULL lParam per le chiamate DrvPrinterEvent in Windows Vista e versioni precedenti. Per Windows 7 e versioni successive, il parametro lParam è un handle di token utente. I driver di stampa possono usare l'handle token restituito per eseguire query sui dati utente o rappresentare l'utente.

Flags

Flag bit fornito dal chiamante, definito come segue:

valore Definizione
PRINTER_EVENT_FLAG_NO_UI Se impostata, la funzione non deve visualizzare un'interfaccia utente. Durante l'installazione di un processore di stampa, un monitor di stampa o un driver di stampante, l'unico modo in cui un'interfaccia utente è consentita tramite l'uso della direttiva VendorSetup . Per altre informazioni, vedere Voci file INF della stampante e operazioni di configurazione della stampante personalizzate .

Attenzione

La direttiva VendorSetup è deprecata e non deve essere usata da nuovi driver v3 o v4 sviluppati. Queste informazioni su VendorSetup vengono fornite solo per riferimento o per la manutenzione dei driver v3 esistenti che usano già questa direttiva INF.

lParam

Non usato a meno che il parametro DriverEvent non sia impostato su PRINTER_EVENT_ATTRIBUTES_CHANGED. In questo caso , lParam contiene l'indirizzo di una struttura PRINTER_EVENT_ATTRIBUTES_INFO. Vedere la descrizione precedente del parametro DriverEvent . Per tutti gli altri valori del parametro DriverEvent , il parametro lParam è NULL.

Valore restituito

Se l'operazione ha esito positivo, la funzione deve restituire TRUE; in caso contrario, deve restituire FALSE. Attualmente, tuttavia, l'unica volta che il valore restituito della funzione viene controllato è quando il spooler ha chiamato DrvPrinterEvent durante l'elaborazione della funzione AddPrinter , con DriverEvent impostato su PRINTER_EVENT_INITIALIZE. Se DrvPrinterEvent restituisce FALSE in questo caso, lo spooler non crea la stampante e causa invece l'esito negativo di AddPrinter .

Commenti

Tutte le DLL dell'interfaccia della stampante devono fornire una funzione DrvPrinterEvent e la funzione deve supportare il codice evento PRINTER_EVENT_INITIALIZE. Il supporto per tutti gli altri codici eventi è facoltativo.

Le impostazioni del Registro di sistema archiviate durante la gestione di un evento PRINTER_EVENT_INITIALIZE devono essere archiviate nella chiave HKEY_LOCAL_MACHINE chiamando SetPrinterData. Per i codici eventi PRINTER_EVENT_INITIALIZE e PRINTER_EVENT_DELETE, lo spooler verifica che il chiamante abbia privilegi amministrativi e chiami DrvPrinterEvent durante la rappresentazione del chiamante.

Al contrario, se è necessario archiviare le impostazioni nel Registro di sistema durante la gestione di un evento PRINTER_EVENT_ADD_CONNECTION, la DLL dell'interfaccia della stampante deve scriverle sotto la chiave HKEY_CURRENT_USER in modo che vengano archiviate su base utente. Se un utente con un profilo roaming accede a un altro sistema, la connessione segue l'utente. La funzione DrvPrinterEvent viene chiamata solo quando l'utente effettua prima la connessione e non quando l'utente accede successivamente ad altri sistemi usando il profilo roaming.

Per i codici eventi PRINTER_EVENT_ADD_CONNECTION e PRINTER_EVENT_DELETE_CONNECTION, il contesto di esecuzione della funzione DrvPrinterEvent è l'applicazione chiamante (in genere la cartella di stampa) e la funzione può visualizzare un'interfaccia utente. Per tutti gli altri codici evento, il contesto di esecuzione è lo spooler di stampa e non può essere visualizzata un'interfaccia utente.

Un esempio di driver che potrebbe visualizzare un'interfaccia utente quando viene effettuata una connessione è un driver FAX, che potrebbe richiedere all'utente il nome e il numero di telefono dell'utente (mittente FAX) e salvare le informazioni fino all'eliminazione della connessione.

Un esempio del tipo di file che potrebbe essere archiviato in una cache client è un file di metriche di tipo carattere di grandi dimensioni che contiene troppe informazioni da scrivere nel Registro di sistema. Quando il codice evento della funzione DrvPrinterEvent è PRINTER_EVENT_CACHE_REFRESH, la DLL dell'interfaccia della stampante può ricaricare il file dal server per assicurarsi che la cache sia aggiornata.

Requisiti

Requisito Valore
Piattaforma di destinazione Desktop
Intestazione winddiui.h (include Winddiui.h)