Author: cfinck
Date: Thu Jul 23 17:48:17 2015
New Revision: 68567

URL: http://svn.reactos.org/svn/reactos?rev=68567&view=rev
Log:
[WINSPOOL_PRINT]
Make winspool_print print a file to the "Dummy Printer On LPT1".

We're now able to print RAW data through the native Win32 Spooler APIs.
https://youtu.be/cNzePucTOLY

Modified:
    
branches/colins-printing-for-freedom/reactos/temp/winspool_print/CMakeLists.txt
    branches/colins-printing-for-freedom/reactos/temp/winspool_print/main.c

Modified: 
branches/colins-printing-for-freedom/reactos/temp/winspool_print/CMakeLists.txt
URL: 
http://svn.reactos.org/svn/reactos/branches/colins-printing-for-freedom/reactos/temp/winspool_print/CMakeLists.txt?rev=68567&r1=68566&r2=68567&view=diff
==============================================================================
--- 
branches/colins-printing-for-freedom/reactos/temp/winspool_print/CMakeLists.txt 
    [iso-8859-1] (original)
+++ 
branches/colins-printing-for-freedom/reactos/temp/winspool_print/CMakeLists.txt 
    [iso-8859-1] Thu Jul 23 17:48:17 2015
@@ -1,4 +1,4 @@
 add_executable(winspool_print main.c)
 set_module_type(winspool_print win32cui)
-add_importlibs(winspool_print kernel32 msvcrt winspool)
+add_importlibs(winspool_print winspool msvcrt kernel32)
 add_cd_file(TARGET winspool_print DESTINATION reactos/system32 FOR all)

Modified: 
branches/colins-printing-for-freedom/reactos/temp/winspool_print/main.c
URL: 
http://svn.reactos.org/svn/reactos/branches/colins-printing-for-freedom/reactos/temp/winspool_print/main.c?rev=68567&r1=68566&r2=68567&view=diff
==============================================================================
--- branches/colins-printing-for-freedom/reactos/temp/winspool_print/main.c     
[iso-8859-1] (original)
+++ branches/colins-printing-for-freedom/reactos/temp/winspool_print/main.c     
[iso-8859-1] Thu Jul 23 17:48:17 2015
@@ -4,14 +4,29 @@
 int main()
 {
     int ReturnValue = 1;
+    DWORD dwRead;
     DWORD dwWritten;
+    HANDLE hFile = INVALID_HANDLE_VALUE;
     HANDLE hPrinter = NULL;
     DOC_INFO_1W docInfo;
-    char szString[] = "winspool_print Test\f";
+    BYTE Buffer[20000];
 
-    if (!OpenPrinterW(L"Generic / Text Only", &hPrinter, NULL))
+    hFile = CreateFileW(L"testfile", GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, 
NULL);
+    if (hFile == INVALID_HANDLE_VALUE)
     {
-        printf("OpenPrinterW failed\n");
+        printf("CreateFileW failed, last error is %lu!\n", GetLastError());
+        goto Cleanup;
+    }
+
+    if (!ReadFile(hFile, Buffer, sizeof(Buffer), &dwRead, NULL))
+    {
+        printf("ReadFile failed, last error is %lu!\n", GetLastError());
+        goto Cleanup;
+    }
+
+    if (!OpenPrinterW(L"Dummy Printer On LPT1", &hPrinter, NULL))
+    {
+        printf("OpenPrinterW failed, last error is %lu!\n", GetLastError());
         goto Cleanup;
     }
 
@@ -20,37 +35,40 @@
 
     if (!StartDocPrinterW(hPrinter, 1, (LPBYTE)&docInfo))
     {
-        printf("StartDocPrinterW failed, last error is %u!\n", GetLastError());
+        printf("StartDocPrinterW failed, last error is %lu!\n", 
GetLastError());
         goto Cleanup;
     }
 
     if (!StartPagePrinter(hPrinter))
     {
-        printf("StartPagePrinter failed, last error is %u!\n", GetLastError());
+        printf("StartPagePrinter failed, last error is %lu!\n", 
GetLastError());
         goto Cleanup;
     }
 
-    if (!WritePrinter(hPrinter, szString, strlen(szString), &dwWritten))
+    if (!WritePrinter(hPrinter, Buffer, dwRead, &dwWritten))
     {
-        printf("WritePrinter failed, last error is %u!\n", GetLastError());
+        printf("WritePrinter failed, last error is %lu!\n", GetLastError());
         goto Cleanup;
     }
 
     if (!EndPagePrinter(hPrinter))
     {
-        printf("EndPagePrinter failed, last error is %u!\n", GetLastError());
+        printf("EndPagePrinter failed, last error is %lu!\n", GetLastError());
         goto Cleanup;
     }
 
     if (!EndDocPrinter(hPrinter))
     {
-        printf("EndDocPrinter failed, last error is %u!\n", GetLastError());
+        printf("EndDocPrinter failed, last error is %lu!\n", GetLastError());
         goto Cleanup;
     }
 
     ReturnValue = 0;
 
 Cleanup:
+    if (hFile != INVALID_HANDLE_VALUE)
+        CloseHandle(hFile);
+
     if (hPrinter)
         ClosePrinter(hPrinter);
 


Reply via email to