Funzione StartXpsPrintJob1 (xpsprint.h)
[StartXpsPrintJob1 non è supportato e può essere modificato o non disponibile in futuro. ]
Crea un processo di stampa per l'invio del contenuto del documento XPS a una stampante. Questa funzione crea un percorso di stampa più efficiente rispetto a StartXpsPrintJob.
Sintassi
HRESULT StartXpsPrintJob1(
[in] LPCWSTR printerName,
[in, optional] LPCWSTR jobName,
[in, optional] LPCWSTR outputFileName,
[in, optional] HANDLE progressEvent,
[in, optional] HANDLE completionEvent,
[out, optional] IXpsPrintJob **xpsPrintJob,
[out] IXpsOMPackageTarget **printContentReceiver
);
Parametri
[in] printerName
Nome della stampante con cui verrà associato questo processo.
[in, optional] jobName
Nome del processo specificato dall'utente da associare a questo processo. È possibile impostare questo parametro su NULL se il processo non richiede un nome distinto specificato dall'utente.
[in, optional] outputFileName
Nome file del file o della porta in cui deve essere reindirizzato l'output di questo processo. Se si imposta questo valore, l'output del processo di stampa verrà indirizzato al file o alla porta specificata. Per inviare il processo di stampa alla stampante specificata da printerName, è necessario impostare questo parametro su NULL.
[in, optional] progressEvent
Handle di eventi segnalato quando si verifica una delle modifiche del processo di stampa seguenti:
- Un ID processo viene assegnato al processo di stampa
- La stampa di una pagina è stata completata
- La stampa di un documento è stata completata
- Il processo di stampa è stato annullato o è stato terminato a causa di un errore
L'API di stampa XPS non reimposta questo evento, ovvero la responsabilità del chiamante.
Impostare questo parametro su NULL se non si vuole ricevere una notifica sullo stato di avanzamento.
[in, optional] completionEvent
Handle eventi segnalato al termine del processo di stampa. Questo evento è garantito che venga segnalato esattamente una volta per chiamata StartXpsPrintJob1 . L'API di stampa XPS non reimposta questo evento, ovvero la responsabilità del chiamante.
Impostare questo parametro su NULL se non si vuole ricevere una notifica sul completamento.
[out, optional] xpsPrintJob
Puntatore all'interfaccia IXpsPrintJob che rappresenta il processo di stampa creato da StartXpsPrintJob1 . Per ottenere lo stato del processo di stampa o annullarlo, usare l'interfaccia IXpsPrintJob . Impostare questo parametro su NULL se non è necessario.
[out] printContentReceiver
Puntatore all'interfaccia IXpsOMPackageTarget creata da questa funzione. Questo parametro è obbligatorio e non è possibile impostarlo su NULL.
Per inviare il contenuto del documento al processo di stampa creato da questa funzione, usare l'interfaccia IXpsOMPackageWriter creata chiamando il metodo CreateXpsOMPackageWriter dell'interfaccia IXpsOMPackageTarget restituita in xpsOMPackageTarget.
Valore restituito
Il metodo restituisce un HRESULT. I valori possibili includono, ma non sono limitati a, quelli indicati nella tabella seguente.
Codice restituito | Descrizione |
---|---|
|
Il metodo è riuscito. |
|
printerName o xpsOMPackageTarget è NULL. |
|
Memoria insufficiente per creare un nuovo oggetto IXpsPrintJob . |
Commenti
StartXpsPrintJob1 è una funzione asincrona e pertanto può restituire prima che lo spooler di stampa crei o inizi un processo di stampa.
Non usare le interfacce restituite in xpsPrintJob e xpsOMPackageTarget finché StartXpsPrintJob1 non viene restituito correttamente.
Dopo che il chiamante avvia l'invio dei dati, è consigliabile monitorare gli eventi di avanzamento segnalati all'evento passato in corsoEvent. Quando l'evento viene segnalato, il chiamante deve chiamare IXpsPrintJob::GetJobStatus per ottenere lo stato corrente del processo di stampa.
Al termine del processo di stampa, se correttamente o meno, l'evento passato al completamentoEvent viene segnalato una sola volta. Per evitare la perdita di dati, è una buona procedura di programmazione per il chiamante monitorare l'evento di completamento e assicurarsi che né il thread né l'applicazione che ha creato il processo di stampa vengano terminati finché l'evento di completamento non è stato segnalato.
Gli stati del processo non sono archiviati né accodati dal spooler di stampa. Poiché l'elaborazione del processo non attende che lo stato venga letto dopo che gli eventi vengono segnalati, il chiamante potrebbe perdere alcune modifiche dello stato, a seconda del ritardo tra l'ora in cui l'applicazione ha ricevuto la notifica di modifica e l'ora in cui ha chiamato IXpsPrintJob::GetJobStatus. Per ricevere notifiche successive, l'applicazione deve reimpostare l'evento di avanzamento dopo aver ricevuto la notifica.
Se una chiamata a StartXpsPrintJob1 ha esito negativo, lo spooler di stampa aggiorna lo stato del processo, segnala gli eventi di completamento e stato e restituisce un codice di errore. Per ottenere lo stato del processo di stampa non riuscito, chiamare IXpsPrintJob::GetJobStatus.
StartXpsPrintJob1 chiama DuplicateHandle al completamentoEvent e progressEvent per assicurarsi che rimangano validi per la durata del processo. Poiché lo spooler di stampa usa un handle duplicato per gli eventi, il chiamante può chiudere questi handle in qualsiasi momento senza influire sull'esecuzione del processo. È tuttavia consigliabile che il chiamante chieda di chiudere questi handle solo dopo che l'evento completamentoEvent è stato segnalato e il chiamante l'ha osservato.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 7 con SP1, Windows Vista e Supplemento aggiornamento piattaforma per Windows Vista [solo app desktop] |
Server minimo supportato | Windows Server 2008 R2 con SP1, Windows Server 2008 e Supplemento aggiornamento piattaforma per Windows Server 2008 [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | xpsprint.h |
Libreria | XpsPrint.lib |
DLL | XpsPrint.dll |
Vedi anche
Documents (Documenti)