4 void Usage(WCHAR
* name
)
6 wprintf(L
"Usage: %s testfile\n", name
);
9 int wmain(int argc
, WCHAR
* argv
[])
13 DWORD dwRead
, dwWritten
;
14 HANDLE hFile
= INVALID_HANDLE_VALUE
;
15 HANDLE hPrinter
= NULL
;
25 hFile
= CreateFileW(argv
[1], GENERIC_READ
, 0, NULL
, OPEN_EXISTING
, 0, NULL
);
26 if (hFile
== INVALID_HANDLE_VALUE
)
28 printf("CreateFileW failed, last error is %lu!\n", GetLastError());
32 dwFileSize
= GetFileSize(hFile
, NULL
);
33 if (dwFileSize
== INVALID_FILE_SIZE
)
35 printf("File is too big, or GetFileSize failed; last error is %lu!\n", GetLastError());
39 if (!OpenPrinterW(L
"Dummy Printer On LPT1", &hPrinter
, NULL
))
41 printf("OpenPrinterW failed, last error is %lu!\n", GetLastError());
45 /* Print to a printer, with the "RAW" datatype (pDatatype == NULL or "RAW") */
46 ZeroMemory(&docInfo
, sizeof(docInfo
));
47 docInfo
.pDocName
= L
"winspool_print";
49 if (!StartDocPrinterW(hPrinter
, 1, (LPBYTE
)&docInfo
))
51 printf("StartDocPrinterW failed, last error is %lu!\n", GetLastError());
55 if (!StartPagePrinter(hPrinter
))
57 printf("StartPagePrinter failed, last error is %lu!\n", GetLastError());
61 while (dwFileSize
> 0)
63 dwRead
= min(sizeof(Buffer
), dwFileSize
);
64 if (!ReadFile(hFile
, Buffer
, dwRead
, &dwRead
, NULL
))
66 printf("ReadFile failed, last error is %lu!\n", GetLastError());
71 if (!WritePrinter(hPrinter
, Buffer
, dwRead
, &dwWritten
))
73 printf("WritePrinter failed, last error is %lu!\n", GetLastError());
78 if (!EndPagePrinter(hPrinter
))
80 printf("EndPagePrinter failed, last error is %lu!\n", GetLastError());
84 if (!EndDocPrinter(hPrinter
))
86 printf("EndDocPrinter failed, last error is %lu!\n", GetLastError());
94 ClosePrinter(hPrinter
);
96 if (hFile
!= INVALID_HANDLE_VALUE
)