Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Funkcja WritePrinter powiadamia bufor wydruku, że dane powinny być zapisywane na określonej drukarce.
Uwaga / Notatka
Funkcja WritePrinter obsługuje tylko drukowanie GDI i nie może być używane do drukowania XPS. Jeśli zadanie drukowania używa ścieżki drukowania XPS lub OpenXPS, użyj interfejsu API drukowania XPS. Wysyłanie zadań drukowania XPS lub OpenXPS do buforu przy użyciu narzędzia WritePrinter nie jest obsługiwane i może spowodować nieokreślone wyniki.
Składnia
BOOL WritePrinter(
_In_ HANDLE hPrinter,
_In_ LPVOID pBuf,
_In_ DWORD cbBuf,
_Out_ LPDWORD pcWritten
);
Parametry
-
hPrinter [in]
-
Uchwyt drukarki. Użyj funkcji OpenPrinter lub AddPrinter , aby pobrać uchwyt drukarki.
-
pBuf [in]
-
Wskaźnik do tablicy bajtów, która zawiera dane, które powinny być zapisywane w drukarce.
-
cbBuf [in]
-
Rozmiar tablicy w bajtach.
-
pcWritten [out]
-
Wskaźnik do wartości, która odbiera liczbę bajtów danych zapisanych na drukarce.
Wartość zwracana
Jeśli funkcja powiedzie się, zwracana wartość jest wartością niezerową.
Jeśli funkcja zakończy się niepowodzeniem, zwracana wartość to zero.
Uwagi
Uwaga / Notatka
Jest to funkcja blokująca lub synchroniczna i może nie zwracać natychmiast. Szybkość zwracania tej funkcji zależy od czynników czasu wykonywania, takich jak stan sieci, konfiguracja serwera wydruku i czynniki implementacji sterownika drukarki, które są trudne do przewidzenia podczas pisania aplikacji. Wywołanie tej funkcji z wątku, który zarządza interakcją z interfejsem użytkownika, może sprawić, że aplikacja będzie wydawała się nie odpowiadać.
Sekwencja zadania drukowania jest następująca:
- Aby rozpocząć zadanie drukowania, wywołaj metodę StartDocPrinter.
- Aby rozpocząć każdą stronę, wywołaj metodę StartPagePrinter.
- Aby zapisać dane na stronie, wywołaj funkcję WritePrinter.
- Aby zakończyć każdą stronę, wywołaj funkcję EndPagePrinter.
- Powtórz 2, 3 i 4 dla jak największej liczby stron w razie potrzeby.
- Aby zakończyć zadanie drukowania, wywołaj metodę EndDocPrinter.
Gdy dokument wysokiego poziomu (taki jak plik Adobe PDF lub Microsoft Word) lub inne dane drukarki (takie jak PCL, PS lub HPGL) są wysyłane bezpośrednio do drukarki, ustawienia drukowania zdefiniowane w dokumencie mają pierwszeństwo przed ustawieniami drukowania systemu Windows. Dokumenty wyjściowe, gdy wartość elementu członkowskiego pDatatype struktury DOC_INFO_1, która została przekazana w parametrze pDocInfo wywołania StartDocPrinter jest "RAW" musi w pełni opisać ustawienia zadania drukowania w stylu DEVMODE w języku zrozumiałym dla sprzętu.
W wersjach systemu Windows wcześniejszych niż Windows XP, gdy strona w buforowanych plikach przekracza około 350 MB, nie może drukować i nie wysyłać komunikatu o błędzie. Na przykład może to wystąpić podczas drukowania dużych plików EMF. Limit rozmiaru strony w wersjach systemu Windows wcześniejszych niż Windows XP zależy od wielu czynników, w tym ilości dostępnej pamięci wirtualnej, ilości pamięci przydzielonej przez wywołanie procesów i ilości fragmentacji w stercie procesu. W systemie Windows XP i nowszych wersjach systemu Windows pliki EMF muszą mieć rozmiar 2 GB lub mniejszy. Jeśli funkcja WritePrinter jest używana do zapisywania danych innych niż EMF, takich jak plik PDL gotowy do drukowania, rozmiar pliku jest ograniczony tylko przez dostępne miejsce na dysku.
Przykłady
Przykładowy program korzystający z tej funkcji można znaleźć w temacie How To: Print Using the GDI Print API (Instrukcje: drukowanie przy użyciu interfejsu API drukowania GDI).
Wymagania
| Wymaganie | Wartość |
|---|---|
| Minimalny obsługiwany klient |
Windows 2000 Professional [tylko aplikacje klasyczne] |
| Minimalny obsługiwany serwer |
Windows 2000 Server [tylko aplikacje klasyczne] |
| Nagłówek |
|
| Biblioteka |
|
| DLL |
|