[PRINTING]
authorColin Finck <colin@reactos.org>
Wed, 26 Oct 2016 12:37:27 +0000 (12:37 +0000)
committerColin Finck <colin@reactos.org>
Wed, 26 Oct 2016 12:37:27 +0000 (12:37 +0000)
Finally merge my branch "colins-printing-for-freedom", giving us an initial implementation of a Win32-compatible Printing Stack (localmon, localspl, spoolss, spoolsv, winspool)
You can now send raw data to parallel port printers using documented Win32 API. An example application is in my "winspool_print" commandline tool merged to rosapps.
ReactOS folks, thanks for your support during the development of this, making my bachelor's thesis a reality! :)

Documentation/Thesis: https://svn.reactos.org/reactos/trunk/documentation/articles/Printing%20Stack%20Thesis/thesis.pdf
Video: https://www.youtube.com/watch?v=cNzePucTOLY

CORE-10489

svn path=/trunk/; revision=73039

20 files changed:
1  2 
reactos/base/services/CMakeLists.txt
reactos/boot/bootdata/hivesys.inf
reactos/dll/win32/CMakeLists.txt
reactos/sdk/include/psdk/winspool.h
reactos/sdk/include/reactos/idl/winspool.idl
reactos/sdk/lib/CMakeLists.txt
reactos/sdk/lib/skiplist/CMakeLists.txt
reactos/sdk/lib/skiplist/skiplist.c
reactos/sdk/lib/skiplist/skiplist.h
reactos/sdk/lib/skiplist/skiplist_test.c
reactos/win32ss/CMakeLists.txt
reactos/win32ss/printing/base/spoolsv/CMakeLists.txt
reactos/win32ss/printing/base/winspool/CMakeLists.txt
reactos/win32ss/printing/monitors/localmon/ui/CMakeLists.txt
reactos/win32ss/printing/providers/localspl/CMakeLists.txt
rosapps/applications/cmdutils/CMakeLists.txt
rosapps/applications/cmdutils/winspool_print/CMakeLists.txt
rosapps/applications/cmdutils/winspool_print/main.c
rostests/apitests/CMakeLists.txt
rostests/winetests/CMakeLists.txt

Simple merge
Simple merge
Simple merge
Simple merge
index 3c48a3a,0000000..700a332
mode 100644,000000..100644
--- /dev/null
@@@ -1,55 -1,0 +1,56 @@@
 +
 +add_subdirectory(cmlib)
 +add_subdirectory(inflib)
 +
 +if(CMAKE_CROSSCOMPILING)
 +
 +add_subdirectory(3rdparty)
 +add_subdirectory(atl)
 +add_subdirectory(comsupp)
 +add_subdirectory(conutils)
 +add_subdirectory(cportlib)
 +add_subdirectory(crt)
 +add_subdirectory(cryptlib)
 +
 +if(MSVC)
 +    add_subdirectory(cpprt)
 +    add_subdirectory(RunTmChk)
 +endif()
 +
 +add_subdirectory(delayimp)
 +#add_subdirectory(dnslib) Nothing links to this lib.
 +add_subdirectory(drivers)
 +add_subdirectory(dxguid)
 +add_subdirectory(epsapi)
 +add_subdirectory(evtlib)
 +add_subdirectory(fast486)
 +add_subdirectory(fslib)
 +
 +if(STACK_PROTECTOR)
 +    add_subdirectory(gcc_ssp)
 +endif()
 +
 +add_subdirectory(ioevent)
 +add_subdirectory(lsalib)
 +add_subdirectory(nt)
 +add_subdirectory(ppcmmu)
 +add_subdirectory(pseh)
 +
 +if(KDBG)
 +    add_subdirectory(rossym)
 +endif()
 +
 +add_subdirectory(rtl)
 +add_subdirectory(scrnsave)
++add_subdirectory(skiplist)
 +add_subdirectory(strmiids)
 +add_subdirectory(smlib)
 +add_subdirectory(tdilib)
 +add_subdirectory(uuid)
 +add_subdirectory(wdmguid)
 +
 +else()
 +
 +add_subdirectory(3rdparty/zlib)
 +
 +endif()
index 0000000,b1764df..b1764df
mode 000000,100644..100644
--- /dev/null
index 0000000,1bdd118..1bdd118
mode 000000,100644..100644
--- /dev/null
Simple merge
index 0000000,9f26127..6467f3b
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,30 +1,30 @@@
 -include_directories(${REACTOS_SOURCE_DIR}/include/reactos/idl)
 -add_rpc_files(server ${REACTOS_SOURCE_DIR}/include/reactos/idl/winspool.idl)
++include_directories(${REACTOS_SOURCE_DIR}/sdk/include/reactos/idl)
++add_rpc_files(server ${REACTOS_SOURCE_DIR}/sdk/include/reactos/idl/winspool.idl)
+ list(APPEND SOURCE
+     forms.c
+     init.c
+     jobs.c
+     main.c
+     monitors.c
+     notifications.c
+     ports.c
+     precomp.h
+     printerdata.c
+     printerdrivers.c
+     printers.c
+     printprocessors.c
+     printproviders.c
+     rpcserver.c
+     rpcstubs.c
+     xcv.c
+     ${CMAKE_CURRENT_BINARY_DIR}/winspool_s.c)
+ add_executable(spoolsv ${SOURCE} spoolsv.rc)
+ set_module_type(spoolsv win32cui UNICODE)
+ target_link_libraries(spoolsv wine)
+ add_delay_importlibs(spoolsv spoolss)
+ add_importlibs(spoolsv advapi32 rpcrt4 msvcrt kernel32 ntdll)
+ add_pch(spoolsv precomp.h SOURCE)
+ add_cd_file(TARGET spoolsv DESTINATION reactos/system32 FOR all)
index 0000000,b1ff3b1..f9c4f92
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,31 +1,31 @@@
 -include_directories(${REACTOS_SOURCE_DIR}/include/reactos/idl)
 -add_rpc_files(client ${REACTOS_SOURCE_DIR}/include/reactos/idl/winspool.idl)
++include_directories(${REACTOS_SOURCE_DIR}/sdk/include/reactos/idl)
++add_rpc_files(client ${REACTOS_SOURCE_DIR}/sdk/include/reactos/idl/winspool.idl)
+ spec2def(winspool.drv winspool.spec ADD_IMPORTLIB)
+ list(APPEND SOURCE
+     devmode.c
+     jobs.c
+     main.c
+     monitors.c
+     ports.c
+     precomp.h
+     printerdata.c
+     printerdrivers.c
+     printers.c
+     printprocessors.c
+     printproviders.c
+     ${CMAKE_CURRENT_BINARY_DIR}/winspool_c.c)
+ add_library(winspool SHARED
+     ${SOURCE}
+     winspool.rc
+     ${CMAKE_CURRENT_BINARY_DIR}/winspool_stubs.c
+     ${CMAKE_CURRENT_BINARY_DIR}/winspool.def)
+ set_target_properties(winspool PROPERTIES SUFFIX ".drv")
+ set_module_type(winspool win32dll UNICODE)
+ target_link_libraries(winspool wine ${PSEH_LIB})
+ add_importlibs(winspool gdi32 rpcrt4 msvcrt kernel32 ntdll)
+ add_pch(winspool precomp.h SOURCE)
+ add_cd_file(TARGET winspool DESTINATION reactos/system32 FOR all)
index 0000000,1d0fba7..beed196
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,14 +1,14 @@@
 -include_directories(${REACTOS_SOURCE_DIR}/include/reactos/wine)
+ add_definitions(-D__WINESRC__)
++include_directories(${REACTOS_SOURCE_DIR}/sdk/include/reactos/wine)
+ spec2def(localui.dll localui.spec)
+ list(APPEND SOURCE
+     localui.c
+     ${CMAKE_CURRENT_BINARY_DIR}/localui.def)
+ add_library(localui SHARED ${SOURCE} localui.rc)
+ set_module_type(localui win32dll)
+ target_link_libraries(localui wine)
+ add_importlibs(localui winspool user32 msvcrt kernel32 ntdll)
+ add_cd_file(TARGET localui DESTINATION reactos/system32 FOR all)
index 0000000,c1c68d1..365f84b
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,27 +1,27 @@@
 -include_directories(${REACTOS_SOURCE_DIR}/lib/skiplist)
+ spec2def(localspl.dll localspl.spec ADD_IMPORTLIB)
++include_directories(${REACTOS_SOURCE_DIR}/sdk/lib/skiplist)
+ list(APPEND SOURCE
+     jobs.c
+     main.c
+     monitors.c
+     ports.c
+     precomp.h
+     printers.c
+     printingthread.c
+     printprocessors.c
+     tools.c)
+ add_library(localspl SHARED
+     ${SOURCE}
+     localspl.rc
+     ${CMAKE_CURRENT_BINARY_DIR}/localspl_stubs.c
+     ${CMAKE_CURRENT_BINARY_DIR}/localspl.def)
+ set_module_type(localspl win32dll UNICODE)
+ target_link_libraries(localspl skiplist16 wine)
+ add_importlibs(localspl advapi32 rpcrt4 spoolss msvcrt kernel32 ntdll)
+ add_pch(localspl precomp.h SOURCE)
+ add_cd_file(TARGET localspl DESTINATION reactos/system32 FOR all)
@@@ -5,4 -2,4 +5,5 @@@ add_subdirectory(ntfsinfo
  add_subdirectory(tee)
  add_subdirectory(touch)
  add_subdirectory(uptime)
++add_subdirectory(winspool_print)
  add_subdirectory(y)
@@@ -15,21 -11,18 +15,23 @@@ add_subdirectory(iphlpapi
  if(NOT ARCH STREQUAL "amd64")
      add_subdirectory(kernel32)
  endif()
+ add_subdirectory(localspl)
 +add_subdirectory(msgina)
  add_subdirectory(msvcrt)
  add_subdirectory(ntdll)
 +add_subdirectory(ole32)
 +add_subdirectory(pefile)
  add_subdirectory(powrprof)
 +add_subdirectory(sdk)
  add_subdirectory(setupapi)
  add_subdirectory(shell32)
 -add_subdirectory(psapi)
+ add_subdirectory(spoolss)
 +add_subdirectory(psapi)
  add_subdirectory(user32)
 -if(NOT ARCH STREQUAL "amd64")
 -    add_subdirectory(w32kdll)
 -    add_subdirectory(w32knapi)
 +add_subdirectory(user32_dynamic)
 +if(NOT ARCH STREQUAL "amd64" AND NOT CMAKE_BUILD_TYPE STREQUAL "Release")
 +    add_subdirectory(win32kdll)
 +    add_subdirectory(win32nt)
  endif()
  add_subdirectory(winhttp)
  add_subdirectory(wininet)
@@@ -112,7 -112,6 +112,7 @@@ add_subdirectory(windowscodecsext
  add_subdirectory(winhttp)
  add_subdirectory(wininet)
  add_subdirectory(winmm)
- add_subdirectory(winspool)
++#add_subdirectory(winspool)
  add_subdirectory(wintrust)
  add_subdirectory(wlanapi)
  add_subdirectory(wldap32)