Condividi tramite


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
Nota Questo evento non verrà segnalato fino a quando l'applicazione ha avviato l'invio di dati al processo di stampa.
 

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
S_OK
Il metodo è riuscito.
E_POINTER
printerName o xpsOMPackageTarget è NULL.
E_OUTOFMEMORY
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.

Nota Quando l'applicazione viene stampata in un file, l'applicazione è responsabile della fornitura del valore da passare al parametro outputFileName per le operazioni da stampa a file. Per stampare in una stampante che usa un driver che restituisce il FILE: porta, il chiamante deve recuperare il nome del file dall'utente visualizzando la finestra di dialogo file comune.
 

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)

IXpsOMPackageTarget

IXpsOMPackageWriter

XML Paper Specification