From: Colin Finck Date: Mon, 4 May 2015 13:39:07 +0000 (+0000) Subject: Add a little test program "winspool_print" that just prints a single line of unformat... X-Git-Tag: backups/colins-printing-for-freedom@73041~74 X-Git-Url: https://git.reactos.org/?p=reactos.git;a=commitdiff_plain;h=f67a62efe55a5326c2b13fc8adf4ab011699c093 Add a little test program "winspool_print" that just prints a single line of unformatted text. This line will arrive as RAW data in the printing stack, so it doesn't need any processing through GDI and serves as a good test for the very basic printing components. svn path=/branches/colins-printing-for-freedom/; revision=67544 --- diff --git a/reactos/CMakeLists.txt b/reactos/CMakeLists.txt index 59d6c4c5542..5f6f15fbe2b 100644 --- a/reactos/CMakeLists.txt +++ b/reactos/CMakeLists.txt @@ -244,6 +244,7 @@ else() add_subdirectory(modules) add_subdirectory(ntoskrnl) add_subdirectory(subsystems) + add_subdirectory(temp) add_subdirectory(tools/wpp) add_subdirectory(win32ss) diff --git a/reactos/temp/CMakeLists.txt b/reactos/temp/CMakeLists.txt new file mode 100644 index 00000000000..44afdeb0c0a --- /dev/null +++ b/reactos/temp/CMakeLists.txt @@ -0,0 +1 @@ +add_subdirectory(winspool_print) diff --git a/reactos/temp/winspool_print/CMakeLists.txt b/reactos/temp/winspool_print/CMakeLists.txt new file mode 100644 index 00000000000..9c20b515e2d --- /dev/null +++ b/reactos/temp/winspool_print/CMakeLists.txt @@ -0,0 +1,4 @@ +add_executable(winspool_print main.c) +set_module_type(winspool_print win32cui) +add_importlibs(winspool_print kernel32 msvcrt winspool) +add_cd_file(TARGET winspool_print DESTINATION reactos/system32 FOR all) diff --git a/reactos/temp/winspool_print/main.c b/reactos/temp/winspool_print/main.c new file mode 100644 index 00000000000..f1069fc3e8e --- /dev/null +++ b/reactos/temp/winspool_print/main.c @@ -0,0 +1,58 @@ +#include +#include + +int main() +{ + int ReturnValue = 1; + DWORD dwWritten; + HANDLE hPrinter = NULL; + DOC_INFO_1W docInfo; + char szString[] = "winspool_print Test\f"; + + if (!OpenPrinterW(L"Generic / Text Only", &hPrinter, NULL)) + { + printf("OpenPrinterW failed\n"); + goto Cleanup; + } + + ZeroMemory(&docInfo, sizeof(docInfo)); + docInfo.pDocName = L"winspool_print"; + + if (!StartDocPrinterW(hPrinter, 1, (LPBYTE)&docInfo)) + { + printf("StartDocPrinterW failed, last error is %u!\n", GetLastError()); + goto Cleanup; + } + + if (!StartPagePrinter(hPrinter)) + { + printf("StartPagePrinter failed, last error is %u!\n", GetLastError()); + goto Cleanup; + } + + if (!WritePrinter(hPrinter, szString, strlen(szString), &dwWritten)) + { + printf("WritePrinter failed, last error is %u!\n", GetLastError()); + goto Cleanup; + } + + if (!EndPagePrinter(hPrinter)) + { + printf("EndPagePrinter failed, last error is %u!\n", GetLastError()); + goto Cleanup; + } + + if (!EndDocPrinter(hPrinter)) + { + printf("EndDocPrinter failed, last error is %u!\n", GetLastError()); + goto Cleanup; + } + + ReturnValue = 0; + +Cleanup: + if (hPrinter) + ClosePrinter(hPrinter); + + return ReturnValue; +}