Funzione StartDocPrinter

La funzione StartDocPrinter informa lo spooler di stampa che un documento deve essere spoolato per la stampa.

Sintassi

DWORD StartDocPrinter(
  _In_ HANDLE hPrinter,
  _In_ DWORD  Level,
  _In_ LPBYTE pDocInfo
);

Parametri

hPrinter [in]

Handle per la stampante. Usare la funzione OpenPrinter o AddPrinter per recuperare un handle della stampante.

Livello [in]

Versione della struttura a cui pDocInfo punta. Questo valore deve essere 1.

pDocInfo [in]

Puntatore a una struttura DOC_INFO_1 che descrive il documento da stampare.

Valore restituito

Se la funzione ha esito positivo, il valore restituito identifica il processo di stampa.

Se la funzione ha esito negativo, il valore restituito è zero.

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.

La sequenza tipica per un processo di stampa è la seguente:

  1. Per iniziare un processo di stampa, chiamare StartDocPrinter.
  2. Per iniziare ogni pagina, chiamare StartPagePrinter.
  3. Per scrivere dati in una pagina, chiamare WritePrinter.
  4. Per terminare ogni pagina, chiamare EndPagePrinter.
  5. Ripetere 2, 3 e 4 per tutte le pagine necessarie.
  6. Per terminare il processo di stampa, chiamare EndDocPrinter.

Si noti che la chiamata a StartPagePrinter e EndPagePrinter potrebbe non essere necessaria, ad esempio se il tipo di dati di stampa include le informazioni sulla pagina.

Quando una pagina in un file spooling supera circa 350 MB, può non riuscire a stampare e non inviare un messaggio di errore. Ad esempio, questo può verificarsi quando si stampano file EMF di grandi dimensioni. Il limite delle dimensioni della pagina dipende da molti fattori, tra cui la quantità di memoria virtuale disponibile, la quantità di memoria allocata dai processi chiamanti e la quantità di frammentazione nell'heap del processo.

Esempio

Per un programma di esempio che usa questa funzione, vedere Procedura: Stampa con l'API di stampa GDI.

Requisiti

Requisito Valore
Client minimo supportato
Windows 2000 Professional [solo app desktop]
Server minimo supportato
Windows 2000 Server [solo app desktop]
Intestazione
Winspool.h (includere Windows.h)
Libreria
Winspool.lib
DLL
Winspool.drv
Nomi Unicode e ANSI
StartDocPrinterW (Unicode) e StartDocPrinterA (ANSI)

Vedi anche

Aggiungijob

DOC_INFO_1

DOC_INFO_2

EndDocPrinter

EndPagePrinter

OpenPrinter

Stampa

Funzioni dell'API spooler di stampa

StartDocPrinter

StartPagePrinter

WritePrinter